thinkphp設置定時執(zhí)行任務的方法

thinkphp設置定時執(zhí)行任務的方法

1、方法一:v3.2.1

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

在這里首先要說的就是這個自動執(zhí)行任務文件,官方所給的這個文件存在BUG,我是用的是v3.2.1版本,后面的版本是否有改正大家可以嘗試一下。

<?php /**  * =======================================  * Created by WeiBang Technology.  * Author: ZhiHua_W  * Date: 2016/9/22 0005  * Time: 上午 11:12  * Project: ThinkPHP實現(xiàn)定時執(zhí)行任務  * Power: 自動執(zhí)行任務  * =======================================  */ namespace Behavior;   class CronRunBehavior {     public function run(&$params)     {         if (C(&#39;CRON_CONFIG_ON&#39;)) {             $this->checkTime(); ????????} ????} ? ????private?function?checkTime() ????{ ????????if?(F('CRON_CONFIG'))?{ ????????????$crons?=?F('CRON_CONFIG'); ????????}?else?if?(C('CRON_CONFIG'))?{ ????????????$crons?=?C('CRON_CONFIG'); ????????} ? ????????if?(!empty($crons)?&amp;&amp;?is_array($crons))?{ ????????????$update?=?false; ????????????$log?=?array(); ????????????foreach?($crons?as?$key?=&gt;?$cron)?{ ????????????????if?(empty($cron[2])?||?$_SERVER['REQUEST_TIME']?&gt;?$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?'?.?"rn"; ????????????????????$update?=?true; ????????????????} ????????????} ????????????if?($update)?{ ????????????????ThinkLog::write(implode('',?$log)); ????????????????F('CRON_CONFIG',?$crons); ????????????} ????????} ????} }

②、tgs.php

立即學習PHP免費學習筆記(深入)”;

在Application/Common/Conf文件夾中新建tags.php文件,進行標簽設置。

<?php   return array( 	//&#39;配置項&#39;=>'配置值' 	'app_begin'?=&gt;array('BehaviorCronRunBehavior'), );

③、config.php

在Application/Common/Conf文件夾中的config.php文件進行自動運行配置。

<?php return array( 	/* 自動運行配置 */  	&#39;CRON_CONFIG_ON&#39; =>?true,?//?是否開啟自動運行? 	'CRON_CONFIG'?=&gt;?array(? 	????'測試執(zhí)行定時任務'?=&gt;?array('Home/Index/crons',?'5',?''),?//路徑(格式同R)、間隔秒(0為一直運行)、指定一個開始時間? 	), );

④、IndexController.class.php

在Application/Home/Controller/IndexController.class.php文件中進行定時執(zhí)行任務的編寫。

<?php /**  * =======================================  * Created by WeiBang Technology.  * Author: ZhiHua_W  * Date: 2016/9/22 0005  * Time: 上午 11:20  * Project: ThinkPHP實現(xiàn)定時執(zhí)行任務  * Power: 自動執(zhí)行任務方法控制器  * =======================================  */ namespace HomeController;   use ThinkController;   class IndexController extends Controller {     /*     public function index(){     $this->show('<style>*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微軟雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div>?<h1>:)</h1> <p>歡迎使用?<b>ThinkPHP</b>!</p> </div><script></script>','utf-8'); ????} ????*/ ????public?function?index() ????{ ????????$contents?=?file_get_contents("test.txt"); ????????//每次訪問此路徑將內(nèi)容輸出,查看內(nèi)容的差別 ????????var_dump($contents); ????????exit; ????????$this-&gt;assign("contents",?$contents); ????????$this-&gt;display(); ????} ? ????//定時執(zhí)行的方法 ????public?function?crons() ????{ ????????//在文件中寫入內(nèi)容 ????????file_put_contents("test.txt",?date("Y-m-d?H:i:s")?.?"執(zhí)行定時任務!"?.?"rn<br>",?FILE_APPEND); ????} }

?這樣定時執(zhí)行任務我們就寫好了,每隔5秒我們訪問任何項目的url,然后查看根目錄下的test.txt文件就會發(fā)現(xiàn)里面的內(nèi)容變化。

注意:當你修改間隔時間時會發(fā)現(xiàn)沒有生效,這是你需要將Runtime/Data文件夾下的緩存文件刪除,間隔時間緩存存放在CRON_CONFIG.php文件中。

2、方法2:v3.2.2

此方法和方法一沒有多大的區(qū)別。

①、tags.php

在/Application/Common/Conf目錄下新建tags.php文件。(此和方法一處一樣)

<?php   return array( 	//&#39;配置項&#39;=>'配置值' 	'app_begin'?=&gt;array('BehaviorCronRunBehavior'), );

②、crons.php

在/Application/Common/Conf目錄下新建crons.php文件。(此處和方法一有區(qū)別,注意區(qū)分。)

<?php   return array( 	//myplan為我們計劃定時執(zhí)行的方法文件,2是間隔時間,nextruntime下次執(zhí)行時間 	//此文件位于/Application/Cron/目錄下 	&#39;cron&#39; =>?array('myplan',?2,?nextruntime), );

③、myplan.php

在/Application/Common/目錄下新建 Cron文件夾,里面新建文件myplan.php文件。

<?php   echo date("Y-m-d H:i:s")."執(zhí)行定時任務!" . "rn<br>";

此時我們就可以訪問項目的url,然后我們會發(fā)現(xiàn)在Application/Runtime/目錄下生成了~crons.php文件,文件內(nèi)容如下:

<?php     return array (         &#39;cron&#39; => ????????????array?( ????????????????0?=&gt;?'myplan', ????????????????1?=&gt;?60, ????????????????2?=&gt;?1398160322, ????????????), ????); ? ?&gt;

推薦教程:thinkphp教程

以上就是

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊9 分享