Schedule cron don't work

时间:2015-01-20 作者:Jens Törnell

我试着设置一个cronjob。它似乎运行le_schedule 功能,但不是le_do_this 作用我还尝试了一些cronjob插件,有些说它可以运行,有些说它失败了。

在这种情况下,它将尝试获取一个文件并保存它,但它没有。为什么这不起作用?

add_action( \'wp\', \'le_schedule\' );
add_action( \'le_event\', \'le_do_this\' );

function le_schedule() {
    if ( ! wp_next_scheduled( \'le_event\' ) ) {
        wp_schedule_event( time(), \'daily\', \'le_event\');
    }
}

function le_do_this() {
    $response = wp_remote_get(\'http://www.example.com/file.txt\');
    if( ! is_wp_error( $response ) ) {
        $body = wp_remote_retrieve_body($response);
        if( ! empty( $body ) ) {
            $put = get_template_directory() . \'/cache/cache.txt\';
            file_put_contents( $put, $body );
        }
    }
}

wp_clear_scheduled_hook( \'le_event\' );
wp_clear_scheduled_hook( \'le_do_this\' );
我清除了时间表,以便能够在每次页面加载时重新运行。

1 个回复
SO网友:birgire

你不应该打电话wp_clear_scheduled_hook 在每次页面加载时,因为您总是使用当前设置重新启动wp cron shcedule。

此外,此电话:

wp_clear_scheduled_hook( \'le_do_this\' );
没什么区别,因为le_do_this 在您的设置中不是挂钩名称。

例如,您可以尝试以下测试插件:

<?php
/**
 * Plugin Name: Daily WP-Cron
 * Description: Call the my_daily_cron_script() function daily, if it exists.
 */

add_action( \'mydailyevent\', function()
{
    // Our script:
    if( function_exists( \'my_daily_cron_script\' ) )
        my_daily_cron_script();
});

register_activation_hook( __FILE__, function()            
{ 
    // Start the cron job:
    wp_schedule_event( time(), \'daily\', \'mydailyevent\' );
});

register_deactivation_hook( __FILE__, function()
{
    // Stop the cron job:
    wp_clear_scheduled_hook( \'mydailyevent\' );
});
您必须定义my_daily_cron_script() 满足您的需求。

抄本上有个警告wp_schedule_event:

要执行的操作挂钩的名称。出于某种原因,某些系统上似乎存在一个问题,即挂钩不能包含下划线或大写字符。

所以让我们使用mydailyevent 作为我们的钩名,而不是my_daily_event, 以防万一。

结束