每天在特定时间运行功能

时间:2019-09-12 06:09:45

标签: php wordpress function api events

我有一个从API获取数据的函数。 我想每天在特定时间运行此功能。我已经使用下面的代码来实现此功能,但是每分钟运行就很麻烦。我在5分钟的间隔内使用此代码进行计划的测试。我的API代码太长。我只是在这里使用测试目的示例代码。

register_activation_hook(__FILE__, 'my_activation');
add_action( 'wp', 'my_activation' );

function my_activation() {
    if (! wp_next_scheduled ( 'my_hourly_event' )) {
    wp_schedule_event(time(), 'hourly', 'my_hourly_event');
    }
}

add_action('my_hourly_event', 'do_this_hourly');

function do_this_hourly() {
    // do something every hour
    $t          = time();
    $user_login = 'test-'.$t;
    $user_email = 'test-'.$t.'@yahoo.com';
    $user_pass  = '123456';

    $userdata = compact( 'user_login', 'user_email', 'user_pass' );
    $user_id = wp_insert_user( $userdata ) ;

    // On success.
    if ( ! is_wp_error( $user_id ) ) {
        echo "User created : ". $user_id;
    }else{
        echo "<h1>User already exsist</h1>";

    }
}

register_deactivation_hook(__FILE__, 'my_deactivation');

function my_deactivation() {
    wp_clear_scheduled_hook('my_hourly_event');
}

2 个答案:

答案 0 :(得分:2)

您可以使用crontab进行操作,例如每天06:02。

crontab -e,然后添加6 2 * * * curl http://api

答案 1 :(得分:1)

wp_schedule_event函数中的用法如下:

使用strtotime()函数,以便您可以指定一天中的时间-它会使用今天的日期和您指定的时间。

wp_schedule_event( strtotime('16:20:00'), 'daily', 'my_daily_event' );

修改

您必须设置排定的下一个排定时间

if (!wp_next_scheduled('my_daily_event')) {
    $time = strtotime('today'); //returns today midnight
    $time = $time + 72000; //add an offset for the time of day you want, keeping in mind this is in GMT.
    // Ex: $time = strtotime("+1 day");
    wp_schedule_event($time, 'daily', 'my_daily_event');
}