【问题标题】:Wordpress cronjob every 5 seconds not workingWordpress cronjob 每 5 秒不工作
【发布时间】:2018-11-15 02:05:10
【问题描述】:

我已将以下内容添加到我的 Wordpress functions.php 文件中,以便每 5 秒向输入的电子邮件地址发送一封邮件,但它不起作用。我添加了一些日志来检查作业是否运行了钩子,但它只是在初始化它,仅此而已:

add_filter( 'cron_schedules', 'five_seconds_interval' );
function five_seconds_interval( $schedules ) {
    $schedules['five_seconds'] = array(
        'interval' => 5,
        'display'  => esc_html__( 'Alle 5 Sekunden' ),
    );

    return $schedules;
}

add_action('init', 'schedule_my_cron',10);
function schedule_my_cron(){
    error_log("schedule_my_cron()");
    wp_schedule_event(time(), 'five_seconds', 'my_job');
}

function my_job() {
    error_log("my_job()");
    wp_mail('test@localhost.de', 'Cronjob funktioniert!', 'LOL', 'Von IBims');
}

这是我在日志文件中得到的内容:

[14-Nov-2018 17:31:24 UTC] schedule_my_cron()

我还在我的配置文件中禁用了 Wordpress 的正常 cronjob:

define('DISABLE_WP_CRON', true);

在此之后,我创建了一个运行良好的 unix cronjob。所以我期待当我每 5 秒运行一次 unix cronjob 时,我的邮件就会发送到该地址。怎么了?

更新

我可以确认我的自定义计划已成功添加,这是wp get schedules() 的部分输出:

[five_seconds] => Array
    (
        [interval] => 5
        [display] => Alle 5 Sekunden
    )

【问题讨论】:

  • 创建自定义日程后,您确认添加成功了吗?它应该在wp get schedules() 的返回中。
  • 是的,添加成功先生。看看我的问题。

标签: php wordpress


【解决方案1】:

根据the documentation for the function,您需要将add_action() 用于按计划调用的函数,而不是执行调度的函数。 wp_schedule_event() 的第三个参数是动作挂钩的名称,而不是函数名称。试试这样的:

register_activation_hook(__FILE__, 'schedule_my_cron');
add_action('init', 'schedule_my_cron',10);
function schedule_my_cron(){
    error_log("schedule_my_cron()");
    wp_schedule_event(time(), 'five_seconds', 'my_five_second_event');
}

add_action('my_five_second_event', 'my_job');
function my_job() {
    error_log("my_job()");
    wp_mail('test@localhost.de', 'Cronjob funktioniert!', 'LOL', 'Von IBims');
}

【讨论】:

  • 现在可以了。非常感谢您的帮助先生!祝你有美好的一天。
猜你喜欢
  • 2021-04-05
  • 2011-11-02
  • 1970-01-01
  • 2017-01-19
  • 2017-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
相关资源
最近更新 更多