WordPress 如何设置和管理定时作业

编辑于:2023年05月23日

WordPress 如何设置和管理定时作业

WordPress 中,我们可以使用wp_schedule_event函数来设置定时作业(cron job),即根据需要按每小时、每天、每周和每月循环执行一次。此外,还可以使另一个函数 wp_schedule_single_event 创建只需要执行一次的一次性任务。

1. wp_schedule_event 函数

1.1 函数介绍:

该函数接受三个参数:$timestamp:表示作业的执行时间,以时间戳格式表示;$recurrence:表示作业的执行频率;$hook:表示要执行的回调函数的名称。

其中 $recurrence 频率支持如下参数:

  • ⭕hourly:表示每小时执行一次(0分0秒开始);
  • ⭕twicedaily:表示每天执行两次(分别在12小时间隔内);
  • ⭕daily:表示每天执行一次(0时0分0秒开始);
  • ⭕weekly:表示每周执行一次(星期日的0时0分0秒开始);
  • ⭕monthly:表示每月执行一次(当月1号的0时0分0秒开始)

1.2 示例代码:

// 设置每天上午10点钟执行一次定时作业
function schedule_my_cronjob() {
    if ( ! wp_next_scheduled( 'cccitu_cronjob_hook' ) ) { 
        // 设定定时作业执行时间(东八区时间)
        $timestamp = strtotime('today 10:00am Asia/Shanghai');
        wp_schedule_event($timestamp, 'daily', 'cccitu_cronjob_hook'); 
    }
}
add_action( 'wp', 'schedule_my_cronjob' );

// 自定义定时作业回调函数
function my_cronjob_callback() {
    // 这里写定时作业要执行的代码
    // ...
}
add_action( 'cccitu_cronjob_hook', 'my_cronjob_callback' );

上述示例代码中,我们首先定义了一个名为 schedule_my_cronjob 的函数,该函数用于设定定时作业的执行时间和回调函数。在该函数中,我们使用了 strtotime 函数来将东八区时间字符串转换为时间戳,然后调用 wp_schedule_event 函数来注册定时作业,指定了作业的执行时间、执行频率和回调函数的名称。

之后,我们又定义了一个名为 my_cronjob_callback 的函数作为定时作业的回调函数,该函数中可以编写定时作业的具体逻辑。

最后,我们使用 add_action 函数将 schedule_my_cronjob 函数和 my_cronjob_callback 函数注册到 WordPress 的钩子中。当 WordPress 调用 wp 钩子时,便会自动执行 schedule_my_cronjob 函数,进而设置定时作业。当到达设定的定时作业执行时间时,WordPress 会调用 my_cronjob_callback 函数,执行预定的定时任务。

2. wp_schedule_single_event 函数

2.1 函数介绍

该函数与上面的wp_schedule_event函数类似,不同之处在于它只能用于执行一次性任务。

wp_schedule_single_event 函数接受三个参数:

  • ⭕$timestamp:表示任务的执行时间,以时间戳格式表示;
  • ⭕$hook:表示要执行的回调函数的名称;
  • ⭕$args(可选):表示回调函数的参数,以数组格式传递。

2.2 示例代码:

// 在激活插件时添加一次性任务
function cccitu_activation_function() {
    // 设置任务的执行时间为2分钟后
    $timestamp = time() + 2 * 60;

    // 注册一次性任务并指定回调函数
    wp_schedule_single_event($timestamp, 'cccitu_one_time_task', array('param1', 'param2'));
}
register_activation_hook(__FILE__, 'cccitu_activation_function');

// 自定义一次性任务回调函数
function cccitu_one_time_task_callback($param1, $param2) {
    // 这里编写一次性任务要执行的代码
    // ...
}
add_action('cccitu_one_time_task', 'cccitu_one_time_task_callback', 10, 2);

上述示例代码中,我们使用 wp_schedule_single_event 函数在激活插件时添加了一个一次性任务,该任务的执行时间为2分钟后。

在回调函数 cccitu_one_time_task_callback 中,我们可以编写一次性任务要执行的具体逻辑,同时可以通过传递参数的方式将参数传递给回调函数。

最后,我们使用 add_action 函数将 cccitu_one_time_task_callback 函数注册到名为 cccitu_one_time_task 的钩子中,以便 WordPress 在任务执行之时调用回调函数。

3. WordPress 计划任务管理插件

以下是几个常用的 WordPress 计划任务管理插件:

  • WP Crontrol:一个功能强大的 WordPress 计划任务管理插件,可以查看、编辑、添加和删除计划任务。同时,它也可以查看所有已注册的钩子,并对已注册的钩子进行编辑、刷新和删除操作。
  • WP Control:一个轻量级的 WordPress 计划任务管理插件,提供了计划任务的列表视图,以及快速添加、编辑和删除计划任务的功能。它还可以查看计划任务的执行历史记录,并导出或下载执行历史记录。
  • Advanced Cron Manager:一个功能丰富的计划任务管理插件,可以查看、编辑和删除系统中所有的计划任务,并可以创建和分配新计划任务。它还提供了类似于系统任务管理器的实时监视功能。
  • Simple Cron:一个简单易用的计划任务管理插件,可以查看、修改和删除 WordPress 计划任务,并显示它们最近一次执行的时间、下一次执行的时间和上一次执行的状态等细节信息。

以上是一些比较常用的 WordPress 计划任务管理插件,可以选择适合自己的来使用。这些插件的功能和用法大同小异,但其中也可能有一些独特的功能,具体可以查看每个插件的介绍和用户评价,以选择最适合的。

相关推荐

暂无评论