Cron和WordPress不起作用。我忘了什么?
我正试图在我的wordpress博客中实现一个cron作业。我想在一个插件中做这件事,为了测试,我试图每10分钟在一个文件中写入一些日志信息,为此我编写了以下PHP代码: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,
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'我已经编辑了这个问题,我认为我拥有正确的权限。