我正在注册一个事件,例如:
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/