wp_schedule_single_event注册一个cron但不会触发函数

时间:2015-12-11 14:21:38

标签: wordpress cron

我正在练习WordPress的日程安排事件。我正在编写一个功能,可以在事件安排的15个星期后立即向我显示警报。我最终得到了以下代码。

        function do_this_in_time() {                    
                echo "<script>alert('');</script>";
        }
        add_action('my_hook_in_time','do_this_in_time');

        wp_schedule_single_event( time() + 15, 'my_hook_in_time');

我知道这会在每次从我的网站加载页面时安排事件,而且我还需要在调度事件之间至少有10分钟的间隔用同一名称,我阅读文档; - )。< / strong>

所以我想说我只加载了一次页面。但我仍然没有得到警报。

我还使用 _get_cron_array()检查了预定的活动,我可以看到我的活动安排如下。

[1449843473] => Array
    (
        [my_hook_in_time] => Array
            (
                [40cd750bba9870f18aada2478b24840a] => Array
                    (
                        [schedule] => 
                        [args] => Array
                            (
                            )

                    )

            )

    )

但它似乎没有开火。我在这里做错了什么?

1 个答案:

答案 0 :(得分:2)

您在尝试在加载页面之前回显Javascript。 wp_schedule_single_event功能会在模板显示之前触发,因此您的文档类型之前会有<script>标记回显。除此之外,如果其他人在活动安排的那一刻访问您的网站,他将收到警报(如果它会在正确的地方回复),而不是您。

如果你只是想测试你的cron执行,我建议你在服务器的某个文件中记录执行。

  

我知道每次从我的网站加载页面时都会安排事件   我还需要在调度事件之间至少留出10分钟的差距   同名,我读了文档; - )。

这不完全正确,每次页面加载时,您都会在crontab中堆叠事件,它们将从 <15秒执行的时间表。这意味着一个用户可以在同一负载上触发多个事件。

例如:

00:00:01 : User visit > Schedule event 1
00:00:02 : User visit > Schedule event 2
00:00:03 : User visit > Schedule event 3
[... no one visit your website in a minute ...]
00:01:00 : Execute events 1, 2 and 3, and schedule event 4