在平常的项目中我们总是会遇到需要将某个方法任务定时执行的问题,定时执行方法任务如果我们拥有服务器的权限,我们可以直接在服务器设置定时任务,例如在Windows的任务计划程序中进行设置,在Linux中编写脚本进行执行。如果我们没有服务器权限,我们该如何使用项目的程序代码来自动定时执行呢?接下来就为大家描述一个基于ThinkPHP框架定时执行任务的例子,具体的方法会在下面进行详细的描述。
此时我们就可以访问项目的url,然后我们会发现在Application/Runtime/目录下生成了~crons.php文件,文件内容如下:
这样就可以观察结果了!
关于定时执行任务在这里需要提醒的是, 这里描述的方法是被动执行的,也就是说当系统网站产生访问的时候,程序会对比是否达到定时的要求或者说是否达到执行任务的时间来决定是否执行方法任务,如果达到则执行,否则不执行。另外,如果网站没有任何访问和请求则也是同样不执行,如果大家有发现或者知道了如何主动执行定时任务,烦请留言告知,我也学习一下。总而言之,此被动方式适合于实时性要求不高的定时任务。
①、tags.php
在/Application/Common/Conf目录下新建tags.php文件。
<?php
return array(
//'配置项'=>'配置值'
'app_begin' =>array('Behavior\CronRunBehavior'),
);
②、crons.php
在/Application/Common/Conf目录下新建crons.php文件。<?php
return array(
//myplan为我们计划定时执行的方法文件,2是间隔时间,nextruntime下次执行时间
//此文件位于/Application/Cron/目录下
'cron' => array('myplan', 2, nextruntime),
);
③、myplan.php
在/Application/Common/目录下新建 Cron文件夹,里面新建文件myplan.php文件。
<?php
echo date("Y-m-d H:i:s")."执行定时任务!" . "\r\n<br>";
此时我们就可以访问项目的url,然后我们会发现在Application/Runtime/目录下生成了~crons.php文件,文件内容如下:
<?php
return array (
'cron' =>
array (
0 => 'myplan',
1 => 2,
2 => 1512439752,
),
);
?>
这样就可以观察结果了!
文章来源:Zhihua_W
版权声明:转载时请标注http://blog.csdn.net/zhihua_w