Cron和WordPress不起作用。我忘了什么?

Cron和WordPress不起作用。我忘了什么?,cron,wordpress,Cron,Wordpress,我正试图在我的wordpress博客中实现一个cron作业。我想在一个插件中做这件事,为了测试,我试图每10分钟在一个文件中写入一些日志信息,为此我编写了以下PHP代码: add_filter( 'cron_schedules', 'ten_minute_prefix' ); function ten_minute_prefix( $schedules ) { $schedules['tenmins'] = array( 'interval' => 600,

我正试图在我的wordpress博客中实现一个cron作业。我想在一个插件中做这件事,为了测试,我试图每10分钟在一个文件中写入一些日志信息,为此我编写了以下PHP代码:

add_filter( 'cron_schedules', 'ten_minute_prefix' );
function ten_minute_prefix( $schedules ) 
{
    $schedules['tenmins'] = array(
        'interval' => 600,
        'display'  => __( '10 minutes' ),
    );
    return $schedules;
}

//This must be here always
add_action('my_task_hook', 'foo_task'); 
function foo_task() 
{               
    file_put_contents('data.txt', date("Y-m-d H:i:s") . "task do it\r\n", FILE_APPEND);
} 

//This is executing in my plugin page in tools section
function myplugin()
{
    //For checking permissions
    file_put_contents('data.txt', date("Y-m-d H:i:s") . "Task begin\r\n", FILE_APPEND);     
    wp_schedule_event( time(), 'tenmins', 'my_task_hook' ); // hourly, daily and twicedaily
    echo "SCHEDULE ACTION";
    ...
}
为了检查我是否真的创建了cron作业,我使用了这个插件。这个插件告诉我这个条目10:my_task_hook√ 行动存在

但是什么都没有发生,文件没有写入,问题是什么

编辑:

我在myplugin函数中添加了一行,以查看我是否有写入文件的权限。事实上,我已经获得了权限,在wp admin/folder中创建了一个data.txt文件

编辑2:

我只是想了解wordpress中的cron作业

wordpress中的Cron不是真正的Cron,它只在任何用户打开网页时触发,如果没有人打开网页,进程将不会触发。因此,如果一个博客没有访问者,cron-jobs就不起作用


请纠正我的错误。

可能是因为您没有写入data.txt所在文件夹的写入权限。由于您尚未明确定义要写入哪个文件夹,它将写入您的PHP文件所在的文件夹。

1正确。检查您的目录是否可写

if (is_writable(dirname(__FILE__))){
    file_put_contents(dirname(__FILE__).'/data.txt', date("Y-m-d H:i:s") . "task do it\r\n", FILE_APPEND);

} else {
    mail('yourmail@example.com', 'oops!', 'error writing');
}
2您的cron scheldule在哪里激活

add_action('activate_' . __FILE__, 'plugin_activate_demo'));    
add_action('deactivate_' .__FILE__,  'plugin_deactivate_demo'));
function plugin_activate_demo(){
    wp_schedule_event( time(), 'tenmins', 'my_task_hook' );  
}

function plugin_deactivate_demo(){
    wp_clear_scheduled_hook('my_task_hook' );  
}

3我在工作中遇到的几乎不可能的情况-检查您是否有正在工作的cron。。。简单地将邮件或类似的东西添加到您的hook_操作代码中。在某些服务器上,由于dns问题,许多网络服务器和url路由在wp cron请求时发出服务器名称没有响应。

感谢您的回答。我有写文件的权限,因为如果我写这行:file\u put\u contents'data.txt',dateY-m-d H:I:s。任务开始\r\n,文件\u追加;在myplugin函数中,我可以在我的文件夹中看到data.txt文件。很高兴看到hook_工作并得到了验证。至于写文件的地方,最好指定文件的完整路径。。。与上面的示例相同-dirname\uuuu FILE\uuuu.'/FILE.txt'我已经编辑了这个问题,我认为我拥有正确的权限。