Jump to content

Manual:$wgRunJobsAsync

From mediawiki.org
Jobs: $wgRunJobsAsync
Controls whether on-request jobs are run asynchronously or synchronously.
Introduced in version:1.23.0 (Gerrit change 124470; git #fab01509)
Removed in version:Still in use
Allowed values:(boolean)
Default value:false (1.27.2, 1.28.1, 1.29+) git #1214a7ca
true (previous versions)

When the execution of jobs during normal page requests is enabled (by setting $wgJobRunRate to a number greater than 0; it defaults to 1), then this variable controls whether to execute them asynchronously or not.

Details

When running jobs asynchronously, an internal HTTP connection for handling the execution of jobs will be opened, and MediaWiki 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 as the returning of the page 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 loading of the page.

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.

Pages do not appear in their categories

Many users have problems with pages, which do not appear in their categories although they are categorized correctly in the wikitext. In many cases this is a problem with the job queue. The issue people usually have is that pages do not immediately appear inside their categories. Reasons may be different. It is possible that the job queue is not working at all or that the queue is not executing enough jobs per page view due to the way the wiki is being used. In the latter case, more jobs get queued than are executed, stalling execution.

In these cases, one should try the following:

  • Try running the jobs directly with runJobs.php .
  • Afterwards, use the showJobs.php maintenance script to verify that there are 0 jobs in the queue. If there still are any jobs (no matter if they are queued, claimed or delayed), then TRUNCATE the database table jobs in the database. This will remove all the unrun jobs from the DB. This might possibly also remove jobs, which were scheduled to be run in the future. These jobs logically will then not be run as they are getting deleted just as all other jobs.
  • Afterwards, run refreshLinks.php maintenance script to get the link tables updated. After that point, category pages will show their member pages correctly again (at least for the current categorization state of the pages).
  • Set $wgRunJobsAsync to false and $wgJobRunRate to 2 or higher. This often helps (but performance gets worse).
  • Afterwards, do a few edits, adding or removing categories from pages. Then monitor the contents of the job table or use the showJobs.php maintenance script to check, if jobs are getting executed now.


See also