Manual:$wgRunJobsAsync/zh
Appearance
| 作业: $wgRunJobsAsync | |
|---|---|
| 控制按请求运行的作业是异步运行还是同步运行。 |
|
| 引进版本: | 1.23.0(Gerrit change 124470; git #fab01509) |
| 移除版本: | 仍在使用 |
| 允许的值: | (布尔值) |
| 默认值: | false (1.27.2, 1.28.1, 1.29+) git #1214a7catrue (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维护脚本来检查作业现在是否正在执行。