CINXE.COM
Manual:Job queue - MediaWiki
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref--excluded vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Manual:Job queue - MediaWiki</title> <script>(function(){var className="client-js vector-feature-language-in-header-disabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref--excluded vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-disabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )mediawikiwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"69b7b274-8ed2-4bb9-9977-0bd02fa0e5bf","wgCanonicalNamespace":"Manual","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":100,"wgPageName":"Manual:Job_queue","wgTitle":"Job queue","wgCurRevisionId":6541072,"wgRevisionId":6541072,"wgArticleId":27638,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Job queue","Installation","MediaWiki concepts"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Manual:Job_queue","wgRelevantArticleId":27638,"wgIsProbablyEditable":false,"wgRelevantPageIsProbablyEditable":false,"wgRestrictionEdit":["autoconfirmed"],"wgRestrictionMove":["autoconfirmed"],"wgNoticeProject":"mediawiki","wgCiteReferencePreviewsActive":true,"wgMediaViewerOnClick":true, "wgMediaViewerEnabledByDefault":true,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgTranslatePageTranslation":"source","wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"personal","wgULSisCompactLinksEnabled":true,"wgVector2022LanguageInHeader":false,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q8615566","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"]};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.translate.tag.languages":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons": "ready","ext.translate.edit.documentation.styles":"ready","ext.translate":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.pt":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.translate.pagetranslation.uls","ext.urlShortener.toolbar","ext.centralauth.centralautologin","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.compactlinks","ext.uls.interface","wikibase.client.vector-2022","ext.checkUser.clientHints"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.pygments%2Ctranslate%2CwikimediaBadges%7Cext.translate.edit.documentation.styles%7Cext.translate.tag.languages%7Cext.uls.pt%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.6"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:site_name" content="MediaWiki"> <meta property="og:title" content="Manual:Job queue - MediaWiki"> <meta property="og:type" content="website"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//m.mediawiki.org/wiki/Manual:Job_queue"> <link rel="apple-touch-icon" href="/static/apple-touch/mediawiki.png"> <link rel="icon" href="/static/favicon/mediawiki.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="MediaWiki (en)"> <link rel="EditURI" type="application/rsd+xml" href="//www.mediawiki.org/w/api.php?action=rsd"> <link rel="canonical" href="https://www.mediawiki.org/wiki/Manual:Job_queue"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> <link rel="alternate" type="application/atom+xml" title="MediaWiki Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-100 ns-subject page-Manual_Job_queue rootpage-Manual_Job_queue skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/MediaWiki" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-mw-download" class="mw-list-item"><a href="/wiki/Download"><span>Get MediaWiki</span></a></li><li id="n-mw-extensions" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Category:Extensions"><span>Get extensions</span></a></li><li id="n-blog-text" class="mw-list-item"><a href="https://techblog.wikimedia.org/"><span>Tech blog</span></a></li><li id="n-mw-contribute" class="mw-list-item"><a href="/wiki/Special:MyLanguage/How_to_contribute"><span>Contribute</span></a></li> </ul> </div> </div> <div id="p-support" class="vector-menu mw-portlet mw-portlet-support" > <div class="vector-menu-heading"> Support </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Help:Contents" title="The place to find out"><span>User help</span></a></li><li id="n-mw-faq" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:FAQ"><span>FAQ</span></a></li><li id="n-mw-manual" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Manual:Contents"><span>Technical manual</span></a></li><li id="n-mw-supportdesk" class="mw-list-item"><a href="/wiki/Project:Support_desk"><span>Support desk</span></a></li><li id="n-mw-communication" class="mw-list-item"><a href="/wiki/Special:MyLanguage/Communication"><span>Communication</span></a></li> </ul> </div> </div> <div id="p-development" class="vector-menu mw-portlet mw-portlet-development" > <div class="vector-menu-heading"> Development </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mw-developerportal" class="mw-list-item"><a href="https://developer.wikimedia.org/"><span>Developer portal</span></a></li><li id="n-svn-statistics" class="mw-list-item"><a href="/wiki/Development_statistics"><span>Code statistics</span></a></li> </ul> </div> </div> <div id="p-mediawiki.org" class="vector-menu mw-portlet mw-portlet-mediawiki_org" > <div class="vector-menu-heading"> mediawiki.org </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-portal" class="mw-list-item"><a href="/wiki/Project:Help" title="About the project, what you can do, where to find things"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-mw-translate" class="mw-list-item"><a href="/wiki/Special:LanguageStats"><span>Translate content</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Load a random page [x]" accesskey="x"><span>Random page</span></a></li><li id="n-mw-discussion" class="mw-list-item"><a href="/wiki/Project:Village_Pump"><span>Village pump</span></a></li><li id="n-Sandboxlink-portlet-label" class="mw-list-item"><a href="/wiki/Project:Sandbox"><span>Sandbox</span></a></li> </ul> </div> </div> <div id="p-lang" class="vector-menu mw-portlet mw-portlet-lang" > <div class="vector-menu-heading"> In other languages </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Help:Job_queue" title="Help:Job queue – English" lang="en" hreflang="en" data-title="Help:Job queue" data-language-autonym="English" data-language-local-name="English" class="interlanguage-link-target"><span>English</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q8615566#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/MediaWiki" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/mediawikiwiki.svg" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="MediaWiki" src="/static/images/mobile/copyright/mediawikiwiki-wordmark.svg" style="width: 7.5em; height: 1.125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search MediaWiki [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search MediaWiki" aria-label="Search MediaWiki" autocapitalize="sentences" title="Search MediaWiki [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-uls" class="mw-list-item active user-links-collapsible-item"><a data-mw="interface" href="#" class="uls-trigger cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>English</span></a> </li> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page's font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=www.mediawiki.org&uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&returnto=Manual%3AJob+queue" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&returnto=Manual%3AJob+queue" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="More options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=www.mediawiki.org&uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&returnto=Manual%3AJob+queue" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&returnto=Manual%3AJob+queue" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Beginning</div> </a> </li> <li id="toc-Set_up" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Set_up"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Set up</span> </div> </a> <button aria-controls="toc-Set_up-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Set up subsection</span> </button> <ul id="toc-Set_up-sublist" class="vector-toc-list"> <li id="toc-Cron" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Cron"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Cron</span> </div> </a> <ul id="toc-Cron-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Continuous_service" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Continuous_service"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>Continuous service</span> </div> </a> <ul id="toc-Continuous_service-sublist" class="vector-toc-list"> <li id="toc-Create_script" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Create_script"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2.1</span> <span>Create script</span> </div> </a> <ul id="toc-Create_script-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Create_service" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Create_service"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2.2</span> <span>Create service</span> </div> </a> <ul id="toc-Create_service-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Job_execution_on_page_requests" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Job_execution_on_page_requests"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Job execution on page requests</span> </div> </a> <button aria-controls="toc-Job_execution_on_page_requests-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Job execution on page requests subsection</span> </button> <ul id="toc-Job_execution_on_page_requests-sublist" class="vector-toc-list"> <li id="toc-Performance_issue" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Performance_issue"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Performance issue</span> </div> </a> <ul id="toc-Performance_issue-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Manual_usage" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Manual_usage"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Manual usage</span> </div> </a> <ul id="toc-Manual_usage-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Abandoned_jobs" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Abandoned_jobs"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Abandoned jobs</span> </div> </a> <ul id="toc-Abandoned_jobs-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-History" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#History"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>History</span> </div> </a> <button aria-controls="toc-History-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle History subsection</span> </button> <ul id="toc-History-sublist" class="vector-toc-list"> <li id="toc-Asynchronous" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Asynchronous"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Asynchronous</span> </div> </a> <ul id="toc-Asynchronous-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Deferred_updates" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Deferred_updates"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Deferred updates</span> </div> </a> <ul id="toc-Deferred_updates-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Changes_in_MediaWiki_1.22" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Changes_in_MediaWiki_1.22"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Changes in MediaWiki 1.22</span> </div> </a> <ul id="toc-Changes_in_MediaWiki_1.22-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Changes_in_MediaWiki_1.23" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Changes_in_MediaWiki_1.23"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.4</span> <span>Changes in MediaWiki 1.23</span> </div> </a> <ul id="toc-Changes_in_MediaWiki_1.23-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Changes_in_MediaWiki_1.27" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Changes_in_MediaWiki_1.27"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.5</span> <span>Changes in MediaWiki 1.27</span> </div> </a> <ul id="toc-Changes_in_MediaWiki_1.27-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Changes_in_MediaWiki_1.28" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Changes_in_MediaWiki_1.28"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.6</span> <span>Changes in MediaWiki 1.28</span> </div> </a> <ul id="toc-Changes_in_MediaWiki_1.28-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Changes_in_MediaWiki_1.29" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Changes_in_MediaWiki_1.29"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.7</span> <span>Changes in MediaWiki 1.29</span> </div> </a> <ul id="toc-Changes_in_MediaWiki_1.29-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Job_examples" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Job_examples"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Job examples</span> </div> </a> <button aria-controls="toc-Job_examples-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Job examples subsection</span> </button> <ul id="toc-Job_examples-sublist" class="vector-toc-list"> <li id="toc-Updating_links_tables_when_a_template_changes" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Updating_links_tables_when_a_template_changes"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Updating links tables when a template changes</span> </div> </a> <ul id="toc-Updating_links_tables_when_a_template_changes-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-HTML_cache_invalidation" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#HTML_cache_invalidation"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>HTML cache invalidation</span> </div> </a> <ul id="toc-HTML_cache_invalidation-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Audio_and_video_transcoding" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Audio_and_video_transcoding"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.3</span> <span>Audio and video transcoding</span> </div> </a> <ul id="toc-Audio_and_video_transcoding-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Typical_values" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Typical_values"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Typical values</span> </div> </a> <ul id="toc-Typical_values-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Special:Statistics" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Special:Statistics"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Special:Statistics</span> </div> </a> <ul id="toc-Special:Statistics-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-For_developers" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#For_developers"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>For developers</span> </div> </a> <ul id="toc-For_developers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Code_stewardship" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Code_stewardship"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Code stewardship</span> </div> </a> <ul id="toc-Code_stewardship-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-namespace">Manual</span><span class="mw-page-title-separator">:</span><span class="mw-page-title-main">Job queue</span></h1> <div class="mw-indicators"> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-manual" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Manual:Job_queue" title="View the subject page [c]" accesskey="c"><span>Manual</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Manual_talk:Job_queue" rel="discussion" title="Discussion about the content page [t]" accesskey="t"><span>Discussion</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Manual:Job_queue"><span>Read</span></a></li><li id="ca-viewsource" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Manual:Job_queue&action=edit" title="This page is protected. You can view its source [e]" accesskey="e"><span>View source</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Manual:Job_queue&action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Manual:Job_queue"><span>Read</span></a></li><li id="ca-more-viewsource" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Manual:Job_queue&action=edit"><span>View source</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Manual:Job_queue&action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Manual:Job_queue" title="A list of all wiki pages that link here [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Manual:Job_queue" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//commons.wikimedia.org/wiki/Special:UploadWizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Manual:Job_queue&oldid=6541072" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Manual:Job_queue&action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&page=Manual%3AJob_queue&id=6541072&wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlQ%C4%B1sald%C4%B1c%C4%B1s%C4%B1&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FManual%3AJob_queue"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrKodu&url=https%3A%2F%2Fwww.mediawiki.org%2Fwiki%2FManual%3AJob_queue"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Special:Book&bookcmd=book_creator&referer=Manual%3AJob+queue"><span>Create a book</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&page=Manual%3AJob_queue&action=show-download-screen"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Manual:Job_queue&printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="wb-otherproject-link wb-otherproject-commons mw-list-item"><a href="https://commons.wikimedia.org/wiki/Commons:Job_queue" hreflang="en"><span>Wikimedia Commons</span></a></li><li class="wb-otherproject-link wb-otherproject-wikipedia mw-list-item"><a href="https://en.wikipedia.org/wiki/Help:Job_queue" hreflang="en"><span>Wikipedia</span></a></li><li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q8615566" title="Link to connected data repository item [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div id="siteSub" class="noprint">From mediawiki.org</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-pt-translate-header noprint nomobile" dir="ltr" lang="en"><a href="/w/index.php?title=Special:Translate&group=page-Manual%3AJob+queue&action=page&filter=&action_source=translate_page" title="Special:Translate">Translate this page</a></div><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="mw-pt-languages noprint navigation-not-searchable" lang="en" dir="ltr"><div class="mw-pt-languages-label">Languages:</div><ul class="mw-pt-languages-list"><li><a href="/wiki/Manual:Job_queue/id" class="mw-pt-progress mw-pt-progress--low" title="Manual:Antrian pekerjaan (4% translated)" lang="id" dir="ltr">Bahasa Indonesia</a></li> <li><a href="/wiki/Manual:Job_queue/de" class="mw-pt-progress mw-pt-progress--high" title="Handbuch:Jobwarteschlange (99% translated)" lang="de" dir="ltr">Deutsch</a></li> <li><span class="mw-pt-languages-ui mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete" lang="en" dir="ltr">English</span></li> <li><a href="/wiki/Manual:Job_queue/vi" class="mw-pt-progress mw-pt-progress--med" title="Manual:Job queue/vi (18% translated)" lang="vi" dir="ltr">Tiếng Việt</a></li> <li><a href="/wiki/Manual:Job_queue/tr" class="mw-pt-progress mw-pt-progress--high" title="Manual:İş kuyruğu (83% translated)" lang="tr" dir="ltr">Türkçe</a></li> <li><a href="/wiki/Manual:Job_queue/es" class="mw-pt-progress mw-pt-progress--low" title="Manual:Job queue (2% translated)" lang="es" dir="ltr">español</a></li> <li><a href="/wiki/Manual:Job_queue/fr" class="mw-pt-progress mw-pt-progress--complete" title="File d’attente des travaux (100% translated)" lang="fr" dir="ltr">français</a></li> <li><a href="/wiki/Manual:Job_queue/it" class="mw-pt-progress mw-pt-progress--low" title="Manual:Job queue/it (9% translated)" lang="it" dir="ltr">italiano</a></li> <li><a href="/wiki/Manual:Job_queue/pl" class="mw-pt-progress mw-pt-progress--med" title="Podręcznik:Kolejka zadań (19% translated)" lang="pl" dir="ltr">polski</a></li> <li><a href="/wiki/Manual:Job_queue/cs" class="mw-pt-progress mw-pt-progress--complete" title="Příručka:Fronta úloh (100% translated)" lang="cs" dir="ltr">čeština</a></li> <li><a href="/wiki/Manual:Job_queue/ru" class="mw-pt-progress mw-pt-progress--med" title="Руководство:Очередь задач (56% translated)" lang="ru" dir="ltr">русский</a></li> <li><a href="/wiki/Manual:Job_queue/fa" class="mw-pt-progress mw-pt-progress--low" title="Manual:Job queue/fa (4% translated)" lang="fa" dir="rtl">فارسی</a></li> <li><a href="/wiki/Manual:Job_queue/bn" class="mw-pt-progress mw-pt-progress--med" title="ম্যানুয়াল:জব কিউই (27% translated)" lang="bn" dir="ltr">বাংলা</a></li> <li><a href="/wiki/Manual:Job_queue/zh" class="mw-pt-progress mw-pt-progress--high" title="手册:作业-{zh:队列;zh-hans:队列;zh-hant:排序;}- (84% translated)" lang="zh" dir="ltr">中文</a></li> <li><a href="/wiki/Manual:Job_queue/ja" class="mw-pt-progress mw-pt-progress--med" title="Manual:ジョブ キュー (47% translated)" lang="ja" dir="ltr">日本語</a></li> <li><a href="/wiki/Manual:Job_queue/ko" class="mw-pt-progress mw-pt-progress--low" title="매뉴얼:작업 큐 (8% translated)" lang="ko" dir="ltr">한국어</a></li></ul></div> <p>In 2009 (<a href="/wiki/Special:MyLanguage/Release_notes/1.6" title="Special:MyLanguage/Release notes/1.6">MediaWiki 1.6</a>) the <b>job queue</b> was introduced to perform long-running tasks asynchronously. The job queue is designed to hold many short tasks using <a href="https://en.wikipedia.org/wiki/batch_processing" class="extiw" title="w:batch processing">batch processing</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Set_up">Set up</h2></div> <p>It is recommended that you instead schedule the running of jobs completely in the background, via the command line. By default, jobs are run at the end of a web request. Disable this default behaviour by setting <code><a href="/wiki/Special:MyLanguage/Manual:$wgJobRunRate" title="Special:MyLanguage/Manual:$wgJobRunRate">$wgJobRunRate</a><span style="display:none"><a href="/wiki/Manual:$wgJobRunRate" title="Manual:$wgJobRunRate"> </a></span></code> to <code>0</code>. </p> <style data-mw-deduplicate="TemplateStyles:r6651107">.mw-parser-output .note{background-position:left 7px top 50%;padding:0.5em 0.5em 0.5em 40px;margin:0.5em 0;overflow:hidden;background-color:#f8f9fa;color:#333;background-repeat:no-repeat;border:1px solid #ddd}.mw-parser-output .note-inline{display:inline-block;vertical-align:middle}.mw-parser-output .note-info{background-color:#eaf3ff;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/e/ec/OOjs_UI_icon_information-progressive.svg");background-size:25px;border-color:#a3caff;padding-left:40px;min-height:25px}.mw-parser-output .note-reminder{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/a/a8/OOjs_UI_icon_lightbulb-yellow.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-warn{background-color:#fff9ea;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/3/3b/OOjs_UI_icon_alert-warning.svg");background-size:25px;border-color:#fc3;min-height:25px}.mw-parser-output .note-error{background-color:#fee7e6;color:#333;background-image:url("https://upload.wikimedia.org/wikipedia/commons/b/bf/OOjs_UI_icon_notice-destructive.svg");background-size:25px;border-color:#c33;min-height:25px}@media screen{html.skin-theme-clientpref-night .mw-parser-output .note{background-color:transparent;color:inherit}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .note{background-color:transparent;color:inherit}}</style><div role="note" class="note note-info">You should run <code>runJobs.php</code> as the same user as the web server runs as, to ensure that permissions to the filesystem are correctly accounted for if jobs touch uploaded files.</div> <div class="mw-heading mw-heading3"><h3 id="Cron">Cron</h3></div> <p>You could use <a href="https://en.wikipedia.org/wiki/Cron" class="extiw" title="w:Cron">cron</a> to run the jobs every hour. Add the following to your crontab file: </p> <div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span></span><span class="m">0</span><span class="w"> </span>*<span class="w"> </span>*<span class="w"> </span>*<span class="w"> </span>*<span class="w"> </span>/usr/bin/php<span class="w"> </span>/var/www/wiki/maintenance/runJobs.php<span class="w"> </span>--maxtime<span class="o">=</span><span class="m">3600</span><span class="w"> </span>><span class="w"> </span>/var/log/runJobs.log<span class="w"> </span><span class="m">2</span>><span class="p">&</span><span class="m">1</span> </pre></div> <p>Using Cron makes it easy to get started, but can make email notifications and cascading template feel slow (to wait up to an hour). Consider using one of the below approaches to set up a continuous job runner instead. </p> <div class="mw-heading mw-heading3"><h3 id="Continuous_service">Continuous service</h3></div> <p>If you have shell access and the possibility to create init scripts, you can create a simple service to run jobs as they become available, and also throttle them to prevent the job runner from monopolising the CPU resources of the server: </p><p>Create a bash script, for example at <code>/usr/local/bin/mwjobrunner</code>: </p> <div class="mw-heading mw-heading4"><h4 id="Create_script">Create script</h4></div> <div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span></span><span class="ch">#!/bin/bash</span> <span class="c1"># Put the MediaWiki installation path on the line below</span> <span class="nv">MW_INSTALL_PATH</span><span class="o">=</span><span class="s2">"/home/www/www.mywikisite.example/mediawiki"</span> <span class="nv">RUN_JOBS</span><span class="o">=</span><span class="s2">"</span><span class="nv">$MW_INSTALL_PATH</span><span class="s2">/maintenance/runJobs.php --maxtime=3600"</span> <span class="nb">echo</span><span class="w"> </span>Starting<span class="w"> </span>job<span class="w"> </span>service... <span class="c1"># Wait a minute after the server starts up to give other processes time to get started</span> sleep<span class="w"> </span><span class="m">60</span> <span class="nb">echo</span><span class="w"> </span>Started. <span class="k">while</span><span class="w"> </span>true<span class="p">;</span><span class="w"> </span><span class="k">do</span> <span class="w"> </span><span class="c1"># Job types that need to be run ASAP no matter how many of them are in the queue</span> <span class="w"> </span><span class="c1"># Those jobs should be very "cheap" to run</span> <span class="w"> </span>php<span class="w"> </span><span class="nv">$RUN_JOBS</span><span class="w"> </span>--type<span class="o">=</span><span class="s2">"enotifNotify"</span> <span class="w"> </span><span class="c1"># Everything else, limit the number of jobs on each batch</span> <span class="w"> </span><span class="c1"># The --wait parameter will pause the execution here until new jobs are added,</span> <span class="w"> </span><span class="c1"># to avoid running the loop without anything to do</span> <span class="w"> </span>php<span class="w"> </span><span class="nv">$RUN_JOBS</span><span class="w"> </span>--wait<span class="w"> </span>--maxjobs<span class="o">=</span><span class="m">20</span> <span class="w"> </span><span class="c1"># Wait some seconds to let the CPU do other things, like handling web requests, etc</span> <span class="w"> </span><span class="nb">echo</span><span class="w"> </span>Waiting<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="m">10</span><span class="w"> </span>seconds... <span class="w"> </span>sleep<span class="w"> </span><span class="m">10</span> <span class="k">done</span> </pre></div> <p>Depending on how fast the server is and the load it handles, you can adapt the number of jobs to run on each cycle and the number of seconds to wait on each cycle. </p><p>Make the script executable (<code>chmod 755</code>). </p> <div class="mw-heading mw-heading4"><h4 id="Create_service">Create service</h4></div> <p>If using systemd, create a new service unit by creating the file <code>/etc/systemd/system/mw-jobqueue.service</code>. Change the <code>User</code> parameter to the user that runs PHP on your web server: </p> <div class="mw-highlight mw-highlight-lang-ini mw-content-ltr" dir="ltr"><pre><span></span><span class="k">[Unit]</span> <span class="na">Description</span><span class="o">=</span><span class="s">MediaWiki Job runner</span> <span class="k">[Service]</span> <span class="na">ExecStart</span><span class="o">=</span><span class="s">/usr/local/bin/mwjobrunner</span> <span class="na">Nice</span><span class="o">=</span><span class="s">10</span> <span class="na">ProtectSystem</span><span class="o">=</span><span class="s">full</span> <span class="na">User</span><span class="o">=</span><span class="s">php-fpm</span> <span class="na">OOMScoreAdjust</span><span class="o">=</span><span class="s">200</span> <span class="na">StandardOutput</span><span class="o">=</span><span class="s">journal</span> <span class="k">[Install]</span> <span class="na">WantedBy</span><span class="o">=</span><span class="s">multi-user.target</span> </pre></div> <p>Enable it and start it with those commands: </p> <div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span></span>sudo<span class="w"> </span>systemctl<span class="w"> </span><span class="nb">enable</span><span class="w"> </span>mw-jobqueue sudo<span class="w"> </span>systemctl<span class="w"> </span>start<span class="w"> </span>mw-jobqueue sudo<span class="w"> </span>systemctl<span class="w"> </span>status<span class="w"> </span>mw-jobqueue </pre></div> <div class="mw-heading mw-heading2"><h2 id="Job_execution_on_page_requests">Job execution on page requests</h2></div> <p>By default, at the end of each web request, one job is taken from the job queue and executed. This behaviour is controlled by the <a href="/wiki/Special:MyLanguage/Manual:$wgJobRunRate" title="Special:MyLanguage/Manual:$wgJobRunRate">$wgJobRunRate</a><span style="display:none"><a href="/wiki/Manual:$wgJobRunRate" title="Manual:$wgJobRunRate"> </a></span> configuration variable. Setting this variable to <code>1</code>, will run a job on each request. Setting this variable to <code>0</code> will disable the execution of jobs during web requests completely, so that you can instead run <a href="/wiki/Special:MyLanguage/Manual:runJobs.php" title="Special:MyLanguage/Manual:runJobs.php">runJobs.php</a><span style="display:none"><a href="/wiki/Manual:RunJobs.php" title="Manual:RunJobs.php"> </a></span> manually or periodically from the command line. <style data-mw-deduplicate="TemplateStyles:r4199130">.mw-parser-output .mw-version{border:1px solid #72777d;font-size:80%;line-height:1.2;border-collapse:collapse}.mw-parser-output .mw-version-ltr{float:right;margin:0 0 .5em .5em;text-align:right}.mw-parser-output .mw-version-rtl{float:left;margin:0 .5em .5em 0;text-align:left}.mw-parser-output .mw-version td{padding:.1em .3em}.mw-parser-output .mw-version-versionbox{border:5px solid #00af89;text-align:center}.mw-parser-output .mw-version-versionnumber{font-weight:bold;font-size:180%}.mw-parser-output .mw-version-version .mw-version-versionbox{border-color:#c8ccd1}.mw-parser-output .mw-version.mw-version-version2 .mw-version-versionbox{border-top-color:#c8ccd1;border-right-color:#c8ccd1;border-left-color:#c8ccd1}.mw-parser-output .mw-version-version-unsupported .mw-version-versionbox{border-color:#d33}.mw-parser-output .mw-version.mw-version-version2-unsupported .mw-version-versionbox{border-top-color:#d33;border-right-color:#d33;border-left-color:#d33}.mw-parser-output .mw-version-version-legacy .mw-version-versionbox{border-color:#f93}.mw-parser-output .mw-version.mw-version-version2-legacy .mw-version-versionbox{border-top-color:#f93;border-right-color:#f93;border-left-color:#f93}.mw-parser-output .mw-version-version-stable .mw-version-versionbox,.mw-parser-output .mw-version.mw-version.mw-version-and-later .mw-version-versionbox{border-color:#00af89}.mw-parser-output .mw-version.mw-version-version2-stable .mw-version-versionbox{border-top-color:#00af89;border-right-color:#00af89;border-left-color:#00af89}.mw-parser-output .mw-version-version-future .mw-version-versionbox{border-color:#8080c0}.mw-parser-output .mw-version.mw-version-version2-future .mw-version-versionbox{border-top-color:#8080c0;border-right-color:#8080c0;border-left-color:#8080c0}.mw-parser-output .mw-version-version-alpha .mw-version-versionbox{border-style:dotted}</style> </p> <table class="mw-version mw-version-ltr mw-version-version mw-version-version-unsupported mw-version-and-later"><tbody><tr> <td>MediaWiki version:</td> <td class="mw-version-versionbox" title="The latest stable version is 1.42"><div class="mw-version-versionnumber"><small>≥</small> 1.23</div></td> </tr></tbody></table> <p>When enabled, jobs will be executed by opening a socket and making an internal HTTP request to an unlisted <a href="/wiki/Special:MyLanguage/Manual:Special_pages" title="Special:MyLanguage/Manual:Special pages">special page</a>: Special:RunJobs. See also the <a href="#Asynchronous">asynchronous section</a>. </p> <div class="mw-heading mw-heading3"><h3 id="Performance_issue">Performance issue</h3></div> <p>If the performance burden of running jobs on every web request is too great but you are unable to run jobs from the command line, you can reduce <a href="/wiki/Special:MyLanguage/Manual:$wgJobRunRate" title="Special:MyLanguage/Manual:$wgJobRunRate">$wgJobRunRate</a><span style="display:none"><a href="/wiki/Manual:$wgJobRunRate" title="Manual:$wgJobRunRate"> </a></span> to a number between <code>1</code> and <code>0</code>. This means a job will execute <i>on average</i> every <code>1 / $wgJobRunRate</code> requests. </p> <div class="mw-highlight mw-highlight-lang-php mw-content-ltr" dir="ltr"><pre><span></span><span class="nv">$wgJobRunRate</span> <span class="o">=</span> <span class="mf">0.01</span><span class="p">;</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Manual_usage">Manual usage</h3></div> <p>There is also a way to empty the job queue manually, for example after changing a template that's present on many pages. Simply run the <code><a href="/wiki/Special:MyLanguage/Manual:runJobs.php" title="Special:MyLanguage/Manual:runJobs.php">maintenance/runJobs.php</a><span style="display:none"><a href="/wiki/Manual:RunJobs.php" title="Manual:RunJobs.php"> </a></span></code> maintenance script. For example: </p> <div class="mw-highlight mw-highlight-lang-bash mw-content-ltr" dir="ltr"><pre><span></span>/path-to-my-wiki/maintenance$<span class="w"> </span>php<span class="w"> </span>./runJobs.php </pre></div> <div class="mw-heading mw-heading2"><h2 id="Abandoned_jobs">Abandoned jobs</h2></div> <p>A job can fail for some reasons. To understand why, you have to inspect the related log file. </p><p>In any case, if a job fails 3 times (so if the system has done that number of attempts), the job is then considered "abandoned" and it's not executed again. </p><p>Relevant source code: </p><p><a class="external free" href="https://doc.wikimedia.org/mediawiki-core/master/php/JobQueue_8php_source.html#l00085">https://doc.wikimedia.org/mediawiki-core/master/php/JobQueue_8php_source.html#l00085</a> </p><p>An abandoned job is: </p> <ul><li>not executed anymore from <a href="/wiki/Special:MyLanguage/Manual:runJobs.php" title="Special:MyLanguage/Manual:runJobs.php">runJobs.php</a><span style="display:none"><a href="/wiki/Manual:RunJobs.php" title="Manual:RunJobs.php"> </a></span></li> <li>not counted from <a href="/wiki/Special:MyLanguage/Manual:showJobs.php" title="Special:MyLanguage/Manual:showJobs.php">Manual:ShowJobs.php</a><span style="display:none"><a href="/wiki/Manual:ShowJobs.php" title="Manual:ShowJobs.php"> </a></span></li> <li>not automatically removed from the database</li> <li>but are included in the count of <a href="#Special:Statistics">Special:Statistics</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="History">History</h2></div> <div class="mw-heading mw-heading3"><h3 id="Asynchronous">Asynchronous</h3></div> <p>The configuration variable <a href="/wiki/Special:MyLanguage/Manual:$wgRunJobsAsync" title="Special:MyLanguage/Manual:$wgRunJobsAsync">$wgRunJobsAsync</a><span style="display:none"><a href="/wiki/Manual:$wgRunJobsAsync" title="Manual:$wgRunJobsAsync"> </a></span> has been added to force the execution of jobs synchronously, in scenarios where making an internal HTTP request for job execution is not wanted. </p><p>When running jobs asynchronously, it will open an internal HTTP connection for handling the execution of jobs, and will return the contents of the page immediately to the client without waiting for the job to complete. Otherwise, the job will be executed in the same process and the client will have to wait until the job is completed. When the job does not run asynchronously, if a fatal error occurs during job execution, it will propagate to the client, aborting the load of the page. </p><p>Note that even if $wgRunJobsAsync is set to true, if PHP can't open a socket to make the internal HTTP request, it will fall back to the synchronous job execution. However, there are a variety of situations where this internal request may fail, and jobs won't be run, without falling back to the synchronous job execution. Starting with MediaWiki 1.28.1 and 1.27.2, $wgRunJobsAsync now defaults to false. </p> <div class="mw-heading mw-heading3"><h3 id="Deferred_updates">Deferred updates</h3></div> <p>The <i>deferred updates</i> mechanism allows the execution of code to be scheduled for the end of the request, after all content has been sent to the browser. This is similar to queuing a job, except that it runs immediately instead of upto several minutes/hours in the future. </p><p><code>DeferredUpdates</code> was introduced in MediaWiki 1.23 and received major changes during MediaWiki 1.27 and 1.28. The goal of this mechanism is speed up the web responses by doing less work, as well as to prioritise some work that would previously be a job to run as soon as possible after the end of the response. </p><p>A deferrable update can implement <code>EnqueueableDataUpdate</code> in order to be queueable as a Job as well. This is used by <code>RefreshSecondaryDataUpdate</code> in core, for example, which means if the update fails for any reason, MediaWiki will fallback to queuing as a job and try again later as to fulfil the contract in question. </p> <div class="mw-heading mw-heading3"><h3 id="Changes_in_MediaWiki_1.22">Changes in MediaWiki 1.22</h3></div> <p>In <a href="/wiki/Special:MyLanguage/MediaWiki_1.22" title="Special:MyLanguage/MediaWiki 1.22">MediaWiki 1.22</a><span style="display:none"><a href="/wiki/MediaWiki_1.22" title="MediaWiki 1.22"> </a></span>, the job queue execution on each page request was changed (<a href="https://gerrit.wikimedia.org/r/59797" class="extiw" title="gerrit:59797">Gerrit change 59797</a>) so, instead of executing the job inside the same PHP process that's rendering the page, a new PHP CLI command is spawned to execute <a href="/wiki/Special:MyLanguage/Manual:runJobs.php" title="Special:MyLanguage/Manual:runJobs.php">runJobs.php</a><span style="display:none"><a href="/wiki/Manual:RunJobs.php" title="Manual:RunJobs.php"> </a></span> in the background. It will only work if <a href="/wiki/Special:MyLanguage/Manual:$wgPhpCli" title="Special:MyLanguage/Manual:$wgPhpCli">$wgPhpCli</a><span style="display:none"><a href="/wiki/Manual:$wgPhpCli" title="Manual:$wgPhpCli"> </a></span> is set to an actual path or safe mode is off, otherwise, the old method will be used. </p><p>This new execution method could cause some problems: </p> <ul><li>If <a href="/wiki/Special:MyLanguage/Manual:$wgPhpCli" title="Special:MyLanguage/Manual:$wgPhpCli">$wgPhpCli</a><span style="display:none"><a href="/wiki/Manual:$wgPhpCli" title="Manual:$wgPhpCli"> </a></span> is set to an incompatible version of PHP (e.g.: an outdated version) jobs may fail to run (fixed in 1.23).</li> <li>PHP <code>open_basedir</code> restrictions are in effect, and <a href="/wiki/Special:MyLanguage/Manual:$wgPhpCli" title="Special:MyLanguage/Manual:$wgPhpCli">$wgPhpCli</a><span style="display:none"><a href="/wiki/Manual:$wgPhpCli" title="Manual:$wgPhpCli"> </a></span> is disallowed (<a href="https://phabricator.wikimedia.org/T62208" class="extiw" title="phabricator:T62208">task T62208</a>, fixed in 1.23).</li> <li>Performance: even if the job queue is empty, the new PHP process is started anyway (<a href="https://phabricator.wikimedia.org/T62210" class="extiw" title="phabricator:T62210">task T62210</a>, fixed in 1.23).</li> <li>Sometimes the spawning PHP process cause the server or only the CLI process to hang due to stdout and stderr descriptors not properly redirected (<a href="https://phabricator.wikimedia.org/T60719" class="extiw" title="phabricator:T60719">task T60719</a>, fixed in 1.22)</li> <li>It does not work for shared code (wiki farms), because it doesn't pass additional required parameters to runJobs.php to identify the wiki that's running the job (<a href="https://phabricator.wikimedia.org/T62698" class="extiw" title="phabricator:T62698">task T62698</a>, fixed in 1.23)</li> <li>Normal shell limits like <a href="/wiki/Special:MyLanguage/Manual:$wgMaxShellMemory" title="Special:MyLanguage/Manual:$wgMaxShellMemory">$wgMaxShellMemory</a><span style="display:none"><a href="/wiki/Manual:$wgMaxShellMemory" title="Manual:$wgMaxShellMemory"> </a></span>, <a href="/wiki/Special:MyLanguage/Manual:$wgMaxShellTime" title="Special:MyLanguage/Manual:$wgMaxShellTime">$wgMaxShellTime</a><span style="display:none"><a href="/wiki/Manual:$wgMaxShellTime" title="Manual:$wgMaxShellTime"> </a></span>, <a href="/wiki/Special:MyLanguage/Manual:$wgMaxShellFileSize" title="Special:MyLanguage/Manual:$wgMaxShellFileSize">$wgMaxShellFileSize</a><span style="display:none"><a href="/wiki/Manual:$wgMaxShellFileSize" title="Manual:$wgMaxShellFileSize"> </a></span> are enforced on the runJobs.php process that's being executed in the background.</li></ul> <p>There's no way to revert to the old on-request job queue handling, besides setting <a href="/wiki/Special:MyLanguage/Manual:$wgPhpCli" title="Special:MyLanguage/Manual:$wgPhpCli">$wgPhpCli</a><span style="display:none"><a href="/wiki/Manual:$wgPhpCli" title="Manual:$wgPhpCli"> </a></span> to <code>false</code>, for example, which may cause other problems (<a href="https://phabricator.wikimedia.org/T63387" class="extiw" title="phabricator:T63387">task T63387</a>). It can be disabled completely by setting <code class="mw-highlight mw-highlight-lang-php mw-content-ltr" style="" dir="ltr"><span class="nv">$wgJobRunRate</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span></code>, but jobs will no longer run on page requests, and you must explicitly run runJobs.php to periodically run pending jobs. </p> <div class="mw-heading mw-heading3"><h3 id="Changes_in_MediaWiki_1.23">Changes in MediaWiki 1.23</h3></div> <p>In MediaWiki 1.23, the 1.22 execution method is abandoned, and jobs are triggered by MediaWiki making an HTTP connection to itself. </p><p>It was first designed as an <a href="/wiki/Special:MyLanguage/Manual:API" title="Special:MyLanguage/Manual:API">API</a> entry point (<a href="https://gerrit.wikimedia.org/r/113038" class="extiw" title="gerrit:113038">Gerrit change 113038</a>) but later changed to be the unlisted special page <a href="/wiki/Special:RunJobs" title="Special:RunJobs">Special:RunJobs</a> (<a href="https://gerrit.wikimedia.org/r/118336" class="extiw" title="gerrit:118336">Gerrit change 118336</a>). </p><p>While it solves various bugs introduced in 1.22, it still requires loading a lot of PHP classes in memory on a new process to execute a job, and also makes a new HTTP request that the server must handle. </p> <div class="mw-heading mw-heading3"><h3 id="Changes_in_MediaWiki_1.27">Changes in MediaWiki 1.27</h3></div> <p>In MediaWiki 1.25 and MediaWiki 1.26, use of <a href="/wiki/Special:MyLanguage/Manual:$wgRunJobsAsync" title="Special:MyLanguage/Manual:$wgRunJobsAsync">$wgRunJobsAsync</a><span style="display:none"><a href="/wiki/Manual:$wgRunJobsAsync" title="Manual:$wgRunJobsAsync"> </a></span> would sometimes cause jobs not to get run if the wiki has custom <a href="/wiki/Special:MyLanguage/Manual:$wgServerName" title="Special:MyLanguage/Manual:$wgServerName">$wgServerName</a><span style="display:none"><a href="/wiki/Manual:$wgServerName" title="Manual:$wgServerName"> </a></span> configuration. This was fixed in MediaWiki 1.27. <a href="https://phabricator.wikimedia.org/T107290" class="extiw" title="phabricator:T107290">task T107290</a> </p> <div class="mw-heading mw-heading3"><h3 id="Changes_in_MediaWiki_1.28">Changes in MediaWiki 1.28</h3></div> <p>Between MediaWiki 1.23 and MediaWiki 1.27, use of <a href="/wiki/Special:MyLanguage/Manual:$wgRunJobsAsync" title="Special:MyLanguage/Manual:$wgRunJobsAsync">$wgRunJobsAsync</a><span style="display:none"><a href="/wiki/Manual:$wgRunJobsAsync" title="Manual:$wgRunJobsAsync"> </a></span> would cause jobs not to get run on if MediaWiki requests are for a server name or protocol that does not match the currently configured server name one (e.g. when supporting both HTTP and HTTPS, or when MediaWiki is behind a reverse proxy that redirects to HTTPS). This was fixed in MediaWiki 1.28. <a href="https://phabricator.wikimedia.org/T68485" class="extiw" title="phabricator:T68485">task T68485</a> </p> <div class="mw-heading mw-heading3"><h3 id="Changes_in_MediaWiki_1.29">Changes in MediaWiki 1.29</h3></div> <p>In MediaWiki 1.27.0 to 1.27.3 and 1.28.0 to 1.28.2, when <a href="/wiki/Special:MyLanguage/Manual:$wgJobRunRate" title="Special:MyLanguage/Manual:$wgJobRunRate">$wgJobRunRate</a><span style="display:none"><a href="/wiki/Manual:$wgJobRunRate" title="Manual:$wgJobRunRate"> </a></span> is set to a value greater than 0, an error like the one below may appear in error logs, or on the page: </p> <pre>PHP Notice: JobQueueGroup::__destruct: 1 buffered job(s) never inserted </pre> <p>As a result of this error, certain updates may fail in some cases, like category members not being updated on category pages, or recent changes displaying edits of deleted pages - even if you manually run <a href="/wiki/Special:MyLanguage/Manual:runJobs.php" title="Special:MyLanguage/Manual:runJobs.php">runJobs.php</a><span style="display:none"><a href="/wiki/Manual:RunJobs.php" title="Manual:RunJobs.php"> </a></span> to clear the job queue. It has been reported as a bug (<a href="https://phabricator.wikimedia.org/T100085" class="extiw" title="phabricator:T100085">task T100085</a>) and was solved in 1.27.4 and 1.28.3. </p> <div class="mw-heading mw-heading2"><h2 id="Job_examples">Job examples</h2></div> <div class="mw-heading mw-heading3"><h3 id="Updating_links_tables_when_a_template_changes">Updating links tables when a template changes</h3></div> <p>When a template changes, MediaWiki adds a job to the job queue for each article transcluding that template. Each job is a command to read an article, expand any templates, and update the link table accordingly. Previously, the host articles would remain outdated until either their parser cache expires or until a user edits the article. </p> <div class="mw-heading mw-heading3"><h3 id="HTML_cache_invalidation">HTML cache invalidation</h3></div> <p>A wider class of operations can result in invalidation of the HTML cache for a large number of pages: </p> <ul><li>Changing an image (all the thumbnails have to be re-rendered, and their sizes recalculated)</li> <li>Deleting a page (all the links to it from other pages need to change from blue to red)</li> <li>Creating or undeleting a page (like above, but from red to blue)</li> <li>Changing a template (all the pages that transclude the template need updating)</li></ul> <p>Except for template changes, these operations do not invalidate the links tables, but they do invalidate the HTML cache of all pages linking to that page, or using that image. Invalidating the cache of a page is a short operation; it only requires updating a single database field and sending a multicast packet to clear the caches. But if there are more than about 1000 to do, it takes a long time. By default, one job is added per <b>300</b> operations (see <a href="/wiki/Special:MyLanguage/Manual:$wgUpdateRowsPerJob" title="Special:MyLanguage/Manual:$wgUpdateRowsPerJob">$wgUpdateRowsPerJob</a><span style="display:none"><a href="/wiki/Manual:$wgUpdateRowsPerJob" title="Manual:$wgUpdateRowsPerJob"> </a></span>) </p><p>Note, however, that even if purging the cache of a page is a short operation, reparsing a complex page that is not in the cache may be expensive, especially if a highly used template is edited and causes lots of pages to be purged in a short period of time and your wiki has lots of concurrent visitors loading a wide spread of pages. This can be mitigated by reducing the number of pages purged in a short period of time, by reducing <code><a href="/wiki/Special:MyLanguage/Manual:$wgUpdateRowsPerJob" title="Special:MyLanguage/Manual:$wgUpdateRowsPerJob">$wgUpdateRowsPerJob</a><span style="display:none"><a href="/wiki/Manual:$wgUpdateRowsPerJob" title="Manual:$wgUpdateRowsPerJob"> </a></span></code> to a small number (20, for example) and also set <code><a href="/wiki/Special:MyLanguage/Manual:$wgJobBackoffThrottling" title="Special:MyLanguage/Manual:$wgJobBackoffThrottling">$wgJobBackoffThrottling</a><span style="display:none"><a href="/wiki/Manual:$wgJobBackoffThrottling" title="Manual:$wgJobBackoffThrottling"> </a></span></code> for <code>htmlCacheUpdate</code> to a low number (5, for example). </p> <div class="mw-heading mw-heading3"><h3 id="Audio_and_video_transcoding">Audio and video transcoding</h3></div> <p>When using <a href="/wiki/Special:MyLanguage/Extension:TimedMediaHandler" title="Special:MyLanguage/Extension:TimedMediaHandler">TimedMediaHandler</a><span style="display:none"><a href="/wiki/Extension:TimedMediaHandler" title="Extension:TimedMediaHandler"> </a></span> to process local uploads of audio and video files, the job queue is used to run the potentially very slow creation of derivative transcodes at various resolutions/formats. </p><p>These are <b>not suitable</b> for running on web requests -- you will need a background runner. </p><p>It's recommended to set up separate runners for the <code>webVideoTranscode</code> and <code>webVideoTranscodePrioritized</code> job types if possible. These two queues process different subsets of files -- the first for high resolution HD videos, and the second for lower-resolution videos and audio files which process more quickly. </p> <div class="mw-heading mw-heading2"><h2 id="Typical_values">Typical values</h2></div> <p>During a period of low load, the job queue might be zero. At Wikimedia, the job queue is, in practice, almost never zero. In off-peak hours, it might be a few hundred to a thousand. During a busy day, it might be a few million, but it can quickly fluctuate by 10% or more. <sup><a rel="nofollow" class="external autonumber" href="https://brionv.com/log/2008/04/22/so-whats-in-the-job-queue-anyway/">[1]</a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Special:Statistics">Special:Statistics</h2></div> <p>Up to MediaWiki 1.16, the job queue value was shown on <a href="/wiki/Special:Statistics" title="Special:Statistics">Special:Statistics</a>. However, since 1.17 (<a href="https://www.mediawiki.org/wiki/Special:Code/MediaWiki/75272" class="extiw" title="rev:75272">rev:75272</a>) it's been removed, and can be seen now with <a href="/wiki/Special:MyLanguage/API:Siteinfo" title="Special:MyLanguage/API:Siteinfo">API:Siteinfo</a><span style="display:none"><a href="/wiki/API:Siteinfo" title="API:Siteinfo"> </a></span>: </p> <div class="plainlinks" style="margin-bottom: 0.3em"><b><a class="external text" href="https://en.wikipedia.org/w/api.php?action=query&meta=siteinfo&siprop=statistics">api.php<span style="margin:0 0.5em">?</span><wbr />action=query<span style="margin:0 0.5em">&</span><wbr />meta=siteinfo<span style="margin:0 0.5em">&</span><wbr />siprop=statistics</a></b> <a class="external text" href="https://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&meta=siteinfo&siprop=statistics">[try in ApiSandbox]</a></div> <p>The number of jobs returned in the API result may be slightly inaccurate when using MySQL, which estimates the number of jobs in the database. This number can fluctuate based on the number of jobs that have recently been added or deleted. For other databases that do not support fast result-size estimation, the actual number of jobs is given. </p> <div class="mw-heading mw-heading2"><h2 id="For_developers">For developers</h2></div> <ul><li><a href="/wiki/Special:MyLanguage/Manual:Job_queue/For_developers" title="Special:MyLanguage/Manual:Job queue/For developers">Job queue for developers</a><span style="display:none"><a href="/wiki/Manual:Job_queue/For_developers" title="Manual:Job queue/For developers"> </a></span></li></ul> <div class="mw-heading mw-heading2"><h2 id="Code_stewardship">Code stewardship</h2></div> <ul><li>Maintained by <a href="/wiki/Special:MyLanguage/MediaWiki_Interfaces_Team" title="Special:MyLanguage/MediaWiki Interfaces Team">MediaWiki Interfaces Team</a>.</li> <li>Live chat (<a href="/wiki/Special:MyLanguage/MediaWiki_on_IRC" title="Special:MyLanguage/MediaWiki on IRC">IRC</a>): <style data-mw-deduplicate="TemplateStyles:r6651115">.mw-parser-output .irc-connect>a{color:green}@media screen{html.skin-theme-clientpref-night .mw-parser-output .irc-connect>a{color:#12c812}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .irc-connect>a{color:#12c812}}</style><span class="plainlinks" style="font-family: monospace,Courier; white-space: pre-wrap !important; word-wrap: break-word; max-width: 1200px; overflow: auto;" title="#mediawiki-core on Libera.Chat IRC"><a rel="nofollow" class="external text" href="ircs://irc.libera.chat:6697/mediawiki-core">#mediawiki-core</a></span> <sup class="plainlinks irc-connect"><a rel="nofollow" class="external text" href="https://web.libera.chat/?channel=#mediawiki-core">connect</a></sup></li> <li>Issue tracker: <a class="external text" href="https://phabricator.wikimedia.org/tag/mediawiki-core-jobqueue/">Phabricator MediaWiki-Core-JobQueue</a> (<a class="external text" href="https://phabricator.wikimedia.org/maniphest/task/edit/form/1/?projects=mediawiki-core-jobqueue">Report an issue</a>)</li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div> <ul><li><a href="/wiki/Special:MyLanguage/Manual:runJobs.php" title="Special:MyLanguage/Manual:runJobs.php">Manual:RunJobs.php</a><span style="display:none"><a href="/wiki/Manual:RunJobs.php" title="Manual:RunJobs.php"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Manual:showJobs.php" title="Special:MyLanguage/Manual:showJobs.php">Manual:ShowJobs.php</a><span style="display:none"><a href="/wiki/Manual:ShowJobs.php" title="Manual:ShowJobs.php"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Manual:manageJobs.php" title="Special:MyLanguage/Manual:manageJobs.php">Manual:ManageJobs.php</a><span style="display:none"><a href="/wiki/Manual:ManageJobs.php" title="Manual:ManageJobs.php"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Manual:$wgJobRunRate" title="Special:MyLanguage/Manual:$wgJobRunRate">$wgJobRunRate</a><span style="display:none"><a href="/wiki/Manual:$wgJobRunRate" title="Manual:$wgJobRunRate"> </a></span></li> <li><a href="/wiki/Special:MyLanguage/Manual:Job_table" title="Special:MyLanguage/Manual:Job table">Manual:Job table</a><span style="display:none"><a href="/wiki/Manual:Job_table" title="Manual:Job table"> </a></span></li></ul> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐76dfdc59c8‐krlvd Cached time: 20241126122118 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.414 seconds Real time usage: 0.583 seconds Preprocessor visited node count: 3088/1000000 Post‐expand include size: 18212/2097152 bytes Template argument size: 7225/2097152 bytes Highest expansion depth: 15/100 Expensive parser function count: 28/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 12308/5000000 bytes Lua time usage: 0.071/10.000 seconds Lua memory usage: 1488230/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 298.231 1 -total 56.11% 167.345 35 Template:Ll 29.12% 86.851 70 Template:Translatable 24.54% 73.181 35 Template:Pagelang 14.03% 41.853 1 Template:MW_1.23 12.71% 37.893 3 Template:Wg 12.45% 37.138 1 Template:Component 11.50% 34.285 1 Template:MW_version/en 10.20% 30.427 1 Template:MW_version/layout 9.42% 28.084 8 Template:TNTN --> <!-- Saved in parser cache with key mediawikiwiki:pcache:27638:|#|:idhash:canonical and timestamp 20241126122118 and revision id 6541072. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&type=1x1&usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://www.mediawiki.org/w/index.php?title=Manual:Job_queue&oldid=6541072">https://www.mediawiki.org/w/index.php?title=Manual:Job_queue&oldid=6541072</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Categories</a>: <ul><li><a href="/wiki/Category:Job_queue" title="Category:Job queue">Job queue</a></li><li><a href="/wiki/Category:Installation" title="Category:Installation">Installation</a></li><li><a href="/wiki/Category:MediaWiki_concepts" title="Category:MediaWiki concepts">MediaWiki concepts</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 26 May 2024, at 01:40.</li> <li id="footer-info-copyright">Text is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-ShareAlike License</a>; additional terms may apply. Text in <a class="external text" href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">the Help: namespace</a> is available under the <a rel="nofollow" class="external text" href="https://creativecommons.org/publicdomain/zero/1.0/">Creative Commons CC0 License</a>. By using this site, you agree to the <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">Terms of Use</a> and <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy Policy</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Project:About">About mediawiki.org</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Project:General_disclaimer">Disclaimers</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/www.mediawiki.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//m.mediawiki.org/w/index.php?title=Manual:Job_queue&mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-5945864d7d-l2dbj","wgBackendResponseTime":118,"wgPageParseReport":{"limitreport":{"cputime":"0.414","walltime":"0.583","ppvisitednodes":{"value":3088,"limit":1000000},"postexpandincludesize":{"value":18212,"limit":2097152},"templateargumentsize":{"value":7225,"limit":2097152},"expansiondepth":{"value":15,"limit":100},"expensivefunctioncount":{"value":28,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":12308,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 298.231 1 -total"," 56.11% 167.345 35 Template:Ll"," 29.12% 86.851 70 Template:Translatable"," 24.54% 73.181 35 Template:Pagelang"," 14.03% 41.853 1 Template:MW_1.23"," 12.71% 37.893 3 Template:Wg"," 12.45% 37.138 1 Template:Component"," 11.50% 34.285 1 Template:MW_version/en"," 10.20% 30.427 1 Template:MW_version/layout"," 9.42% 28.084 8 Template:TNTN"]},"scribunto":{"limitreport-timeusage":{"value":"0.071","limit":"10.000"},"limitreport-memusage":{"value":1488230,"limit":52428800}},"cachereport":{"origin":"mw-web.codfw.main-76dfdc59c8-krlvd","timestamp":"20241126122118","ttl":2592000,"transientcontent":false}}});});</script> </body> </html>