php - Wordpress cron wp_schedule_single_event – 操作并不总是有效

标签 php wordpress woocommerce cron custom-wordpress-pages

我正在注册一个事件,例如:

wp_schedule_single_event( time(), 'do_custom_hook', array( $body ) );

在此之上,我添加了以下操作:
add_action('do_custom_hook', 'process_custom_hook', 10);

function process_custom_hook($body){
    // custom code here
}

但是,有时 process_custom_hook 函数会触发,而在其他时候,它根本不会触发(不过,它触发的次数最多。大约有 10%-20% 的时间会丢失)

该事件始终返回 true,这意味着它必须已注册。

此外,在测试时,我确保参数(正文)总是不同的。

为什么会发生这种情况?

最佳答案

来自 the codex :

Note that scheduling an event to occur before 10 minutes after an existing event of the same name will be ignored, unless you pass unique values for $args to each scheduled event.



如果您的自定义 Hook 仅在某些时候有效,那么这可能是一个值得关注的途径。如果您需要立即处理钩子(Hook),那么考虑给钩子(Hook)一个唯一的名称或将唯一的值传递给钩子(Hook)可能是谨慎的。

如果您不需要立即执行您的工作,那么您可以考虑使用 wp_next_scheduled()确定作业下次运行的时间,并将作业设置为在下一个计划作业之后运行。

还值得注意的是,如果这个任务背后似乎有一致的逻辑(似乎是这样) - 为什么不将作业信息存储到数据库中并每 5-10 分钟运行一次 cron 作业以获取数据库中的任何新工作并这样处理它们?这将避免需要处理 wp_schedule_single_event() 的行为。 .

关于php - Wordpress cron wp_schedule_single_event – 操作并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60374317/

相关文章:

php - 在 MySQL 中设置名称 utf8?

javascript - 如何在文本输入中显示所选项目?

HTML 中的 PHP 语法 - 添加到购物车按钮

php - 在结账页面和 WooCommerce 数据字段中添加取货地点自定义字段

php - 使用 error_page 检索 REDIRECT_STATUS

php - jQuery.ajax 返回错误 : Unexpected token with Error Message: parseerror?

wordpress - Fontello 字体图标在 Android 上无法正确呈现

css - WordPress 中的自定义评论表单

mysql - 如何使用 MySQL 查询在 WordPress 的特定类别中选择最新的 3 篇文章?

wordpress - 店铺页面先展示特色商品,最后展示缺货商品