在wordpress中安排每秒的事件

时间:2017-07-13 11:46:57

标签: wordpress events scheduled-tasks

我希望每秒使用我的自定义插件发送一封电子邮件用于测试目的。我已经编写了安排此事件的代码,但我没有收到电子邮件。我不确定我是否已正确安排,但显然一切似乎都很好。这是我的代码,我已经在插件中编写了这段代码。

<?php


register_activation_hook(__FILE__, 'my_activation');

function isa_add_cron_recurrence_interval( $schedules ) {

$schedules['every_second'] = array(
    'interval'  => 1,
    'display'   => __( 'Every second', 'textdomain' )
);

return $schedules;
}
add_filter( 'cron_schedules', 'isa_add_cron_recurrence_interval' );

function my_activation() {
if (! wp_next_scheduled ( 'my_event' )) {
    wp_schedule_event(time(), 'everysecond', 'my_event');
}
}

add_action('my_event', 'do_this');

function do_this() {
    mail('haris.4090@gmail.com','Testing','testing email from plugin');
}

2 个答案:

答案 0 :(得分:0)

这似乎只是一个错字。此

wp_schedule_event(time(), 'everysecond', 'my_event');

应该是

wp_schedule_event(time(), 'every_second', 'my_event');

写在$schedules['every_second']

答案 1 :(得分:0)

你应该纠正Felipe Elia在回答中注意到的拼写错误。

但即使在这种情况下它也行不通。

  1. WP cron a会在有人访问您的网站时激活。在WordPress init进程中,cron检查是否有任何已调度的事件,执行时间已经结束并触发此类事件。
  2. 所以,如果你的网站每秒访问几次,它可以工作,但你真的有这么多的访问者吗?

    实际上,每次访问都会发送一次电子邮件(假设每天100次访问=每天100封电子邮件)。

    1. 即使您每秒多次访问,也不会每秒发送一次电子邮件,因为WordPress的初始化时间通常更长。
    2. 假设事件已安排。从此时间开始1秒后首次访问将触发事件。我们假设初始时间是1.5秒。因此,您将在第一个邮件发送2.5秒后收到新电子邮件。接下来的事件将被解雇。因此,您将在第一封电子邮件中获得第三封电子邮件,依此类推。