Jump to content

Manual:$wgRunJobsAsync/zh

From mediawiki.org
This page is a translated version of the page Manual:$wgRunJobsAsync and the translation is 90% complete.
作业: $wgRunJobsAsync
控制按请求运行的作业是异步运行还是同步运行。
引进版本:1.23.0​(Gerrit change 124470; git #fab01509
移除版本:仍在使用
允许的值:(布尔值)
默认值:false (1.27.2, 1.28.1, 1.29+) git #1214a7ca
true (previous versions)

当启用在正常页面请求期间执行作业(通过将$wgJobRunRate 设置为大于0的数字;其默认值为1)时,此变量控制是否异步执行这些作业。

详情

以异步方式运行作业时,会打开一个用于处理作业执行的内部HTTP连接,MediaWiki会立即向客户端返回页面内容,而无需等待作业完成。 否则,该任务将与页面返回在同一进程中执行,客户端将不得不等待任务完成。 当作业未异步运行时,如果在作业执行过程中发生致命错误,它将传播到客户端,从而中止页面加载。

即使$wgRunJobsAsync被设置为true,如果PHP无法打开套接字来发出内部HTTP请求,它也会退回到同步作业执行模式。

页面未出现在其分类中

许多用户在页面方面遇到了问题,这些页面虽然在wikitext中被正确分类,但却没有出现在它们所属的分类中。 在很多情况下,这是工作队列的问题。 人们通常遇到的问题是,页面不会立即显示在他们的分类中。 原因可能各不相同。有可能是作业队列完全无法运行,也可能是由于维基的使用方式,队列在每次页面浏览时执行的作业数量不足。在后一种情况下,排队的作业数量超过了执行的数量,导致执行停滞。

在这些情况下,应该尝试以下方法:

  • 尝试使用runJobs.php 直接运行这些任务。
  • 之后,使用showJobs.php 维护脚本验证队列中是否有0个作业。 如果仍然存在任何作业(无论它们是处于排队、已认领还是延迟状态),那么就截断数据库中的jobs数据表。 这将从数据库中删除所有未运行的作业。 这也可能会移除那些计划在未来运行的作业。 从逻辑上讲,这些作业不会运行,因为它们正像所有其他作业一样被删除。
  • 之后,运行refreshLinks.php 维护脚本以更新链接表。 从那以后,分类页面将再次正确显示其成员页面(至少就页面当前的分类状态而言)。
  • 将$wgRunJobsAsync设置为false,将$wgJobRunRate设置为2或更高。 这通常会有帮助(但性能会变差)。
  • 之后,进行一些编辑,在页面中添加或删除分类。 然后监控job 表的内容,或者使用showJobs.php 维护脚本来检查作业现在是否正在执行。

See also