ThinkPHP   发布时间:2019-10-08  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ThinkPHP框架实现定时执行任务的两种方法分析大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例讲述了Thinkphp框架实现定时执行任务的两种方法。分享给大家供大家参,具体如下:

在平常的项目中我们总是会遇到需要将某个方法任务定时执行的问题,定时执行方法任务如果我们拥有服务器的权限,我们可以直接在服务器设置定时任务,例如在Windows的任务计划程序中进行设置,在Linux中编写脚本进行执行。如果我们没有服务器权限,我们该如何使用项目的程序代码来自动定时执行呢?接下来就为大家描述一个基于Thinkphp框架定时执行任务的例子,具体的方法会在下面进行详细的描述。

关于定时执行任务在这里需要提醒的是, 这里描述的方法是被动执行的,也就是说当系统网站产生访问的时候,程序会对比是否达到定时的要求或者说是否达到执行任务的时间来决定是否执行方法任务,如果达到则执行,否则不执行。另外,如果网站没有任何访问和请求则也是同样不执行,如果大家有发现或者知道了如何主动执行定时任务,烦请留言告知,我也学习一下。

1、方法一:v3.2.1

①、php/Library/Behavior/CronRunBehavior.class.php文件

在这里首先要说的就是这个自动执行任务文件,官方所给的这个文件存在BUG,我是用的是v3.2.1版本,后面的版本是否有改正大家可以尝试一下。

php;"> checkTime(); } } private function checkTime() { if (F('CRON_CONFIG')) { $crons = F('CRON_CONFIG'); } else if (C('CRON_CONFIG')) { $crons = C('CRON_CONFIG'); } if (!empty($crons) && is_array($crons)) { $update = false; $log = array(); foreach ($crons as $key => $cron) { if (empty($cron[2]) || $_SERVER['requEST_TIME'] > $cron[2]) { G('cronStart'); R($cron[0]); G('cronEnd'); $_useTime = G('cronStart','cronEnd',6); $cron[2] = $_SERVER['requEST_TIME'] + $cron[1]; $crons[$key] = $cron; $log[] = 'Cron:' . $key . ' Runat ' . date('Y-m-d H:i:s') . ' Use ' . $_useTime . ' s ' . "\r\n"; $update = true; } } if ($updatE) { \Think\Log::write(implode('',$log)); F('CRON_CONFIG',$crons); } } } }

此段代码已经将bug修复,大家可以将其复制到 “ php/Library/Behavior/CronRunBehavior.class.php ” 文件中进行保存。

②、s.php

.php文件,进行标签设置。

php;"> '配置值' 'app_begin' =>array('Behavior\CronRunBehavior'),);

③、php

.php文件进行自动运行配置。

php;"> true,// 是否开启自动运行 'CRON_CONFIG' => array( '测试执行定时任务' => array('Home/Index/crons','5',''),//路径(格式同R)、间隔秒(0为一直运行)、指定一个开始时间 ),);

④、s.php

.php文件中进行定时执行任务的编写。

php;"> show('
607_39@:)

欢迎使用 Thinkphp

','utf-8'); } */ public function index() { $contents = file_get_contents("test.txt"); //每次访问此路径将内容输出,查看内容的差别 var_dump($contents); exit; $this->assign("contents",$contents); $this->display(); } //定时执行的方法 public function crons() { //在文件中写入内容 file_put_contents("test.txt",date("Y-m-d H:i:s") . "执行定时任务!" . "\r\n
",FILE_APPEND); } }

这样定时执行任务我们就写好了,每隔5秒我们访问任何项目的url,然后查看根目录下的test.txt文件@R_675_10585@里面的内容变化。

注意:

当你修改间隔时间时会发现没有生效,这是你需要将.php文件中。

纯净的项目文件点击此处本站下载。欢迎大家下载指正。

2、方法2:v3.2.2

此方法和方法一没有多大的区别。

①、s.php

.php文件。(此和方法一处一样)

php;"> '配置值' 'app_begin' =>array('Behavior\CronRunBehavior'),);

②、s.php

.php文件。(此处和方法一有区别,注意区分。)

php;"> array('myplan',2,nextruntimE),);

③、php

.php文件。

php;"> php echo date("Y-m-d H:i:s")."执行定时任务!" . "\r\n
";

此时我们就可以访问项目的url,然后我们会发现在.php文件,文件内容如下:

php;"> array ( 0 => 'myplan',1 => 60,2 => 1398160322,),); ?>

这样就可以观察结果了!

更多关于thinkphp相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《php模板技术总结》。

希望本文所述对大家基于Thinkphp框架的php程序设计有所帮助。

大佬总结

以上是大佬教程为你收集整理的ThinkPHP框架实现定时执行任务的两种方法分析全部内容,希望文章能够帮你解决ThinkPHP框架实现定时执行任务的两种方法分析所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: