Wp-cron是同时运行所有调度的任务,还是一个接一个地运行?

时间:2018-02-25 作者:learning_13

我正在开发一个插件,想添加一个cron任务(比如cron\\u task\\u test),但我有一个疑问。如果计划与我的任务(cron\\u task\\u test)同时运行15个任务(可能由多个插件或用户自己安排),wp cron会逐个选择它们吗,即在第一个任务完成后选择另一个任务,或者如果第一个任务耗时超过一分钟?还是会一个接一个地被解雇

简而言之,cron\\u锁是如何工作的?如果它一个接一个地执行,那么运行所有任务的主cron线程本身是否会超过服务器的最大执行时间限制(通常为30秒)?

如果我的任务(cron\\u task\\u test)之前的任何其他cron任务抛出错误或超出时间限制,会发生什么情况?

1 个回复
SO网友:Sebastian Kurzynowski

例如,大约12:00,它应该运行3个任务。

如果您使用wp-cron 它将在12:00左右有人访问您的页面时开始。(这有点复杂,因为当两个用户在同一时刻访问您的页面时,cron可以启动两次并执行两次所有操作)。

然而,有人在12:00左右打开了我们的页面,cron开始了。它提取阵列中的所有计划事件。设置cron繁忙的瞬态并启动内部的所有进程foreach 语句使用call_user_func_array (几乎与do_action 但对于array ).

中的过程foreach:

必要时重新安排

  • 调用\\u user\\u func\\u数组(执行此任务)
  • 检查cron lock,因为如果钩子运行得太长,而另一个cron进程窃取了锁,cron就会退出循环

    crontab可能是更好的解决方案这里有我朋友在文章中写的一些额外信息:Cron solutions for wordpress

    结束