何时将wp_Schedule_Single_Event用于异步/非阻塞进程?

时间:2014-04-16 作者:Jan Beck

我最近在一些插件中注意到了这种模式:

<?php
function MY_CRON(){
  wp_schedule_single_event(time(), \'MY_ACTION\');
}
add_action(\'save_post\', \'MY_CRON\');

function MY_FUNCTION(){
  // YOUR CODE HERE
}
add_action(\'MY_ACTION\', \'MY_FUNCTION\');
它将避免在您想要快速的挂钩上运行复杂的函数。它可以是“save\\u post”,一个通过AJAX的调用,或者在我的例子中是Woocommerce中的一个新订单。这些文章对其进行了更详细的概述:

  1. Asynchronous functions in Wordpress
  2. Use WP Cron to Trigger Asynchronous Background Tasks in WordPress on Post Save or Update
I was hoping to get some opinions from other developers about this pattern.

我对这种方法的问题是a)如果你的网站流量低,它可能永远不会运行,因为WP Cron的工作方式。b)如果你正在做的事情非常复杂,比如说需要10秒才能完成,那么在下一次页面加载触发WP Cron时,会不会延迟页面呈现?因此,我的管理操作非常迅速,我关闭了浏览器,但下一个访问该网站的用户将获得额外的10秒加载时间?所以我所做的就是把等待时间传给其他人?在某些情况下,这甚至可能是我自己。

所以我的结论是禁用WP-Cron并安排对WP-Cron的调用。php?通过crontab执行\\u cron。但这不会在我的网站运行时阻止它吗?

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

。。。如果您的站点流量很低,那么由于WP Cron的工作方式,它可能永远不会运行

在您的特定示例中,它应该始终启动。自从save_post 在浏览器重定向之前运行,随后返回到编辑屏幕的请求将触发cron调度。

。。。下次页面加载触发WP Cron时,这不会延迟页面呈现吗?

不,如果你退房spawn_cron(), 您将看到它触发一个并行请求来处理计划。

从…起the codex:

通过不会停止页面加载的HTTP请求发送运行cron的请求。不会每60秒运行一次以上。

结束

相关推荐

what is firing cron

我在尝试设置一个简单的cronjob时遇到了问题。很多像这样的WordPress教程http://tommcfarlin.com/wordpress-cron-jobs/ 指定带有某个时间表的crontab,并在WordPress中指定另一个时间表。我似乎无法理解这一点。在本教程中,每15分钟会详细说明一次:*/15 * * * * wget -q -O – http://yourdomain.com/wp-cron.php?doing_wp_cron然后在代码中他们说:wp_schedule_event