tp5定時任務【轉 】


前段時間在研究thinkphp5.0版本做自動任務的時候,碰到了棘手的問題–如何做自動化任務,因為程序開始就需要一直執行,查了很多資料,都說靠php原生的死循環來做不靠譜,時間誤差也沒法保證,所以后面采用thinkphp5的command工具和服務器的定時任務來做:

最簡單的方法就算是直接在PHP代碼里面實現  不過感覺不夠高大上

<?php
ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續執行.
set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執行下去
$interval=5;// 每隔5s運行
  
//方法1--死循環
do{
  echo'測試'.time().'<br/>';
  sleep($interval);// 等待5s 
}while(true);
  
//方法2---sleep 定時執行
  require_once'./curlClass.php';//引入文件
    
  $curl= new httpCurl();//實例化
  $stime= $curl->getmicrotime();
  for($i=0;$i<=10;$i++){
      
    echo'測試'.time().'<br/>';
    sleep($interval);// 等待5s
      
  }
  ob_flush();
  flush();
  $etime= $curl->getmicrotime();
  echo'<hr>';
  echoround(($etime-stime),4);//程序執行時間

  

 

1.新建command文件

在application/模塊/新建一個command文件夾/Test.class.php

<?php namespace app\admin\command; use think\console\Command; use think\console\Input; use think\console\Output; class Test extends Command { protected function configure(){ $this->setName('Test')->setDescription("計划任務 Test"); } protected function execute(Input $input, Output $output){ $output->writeln('Date Crontab job start...'); /*** 這里寫計划任務列表集 START ***/ $this->test(); /*** 這里寫計划任務列表集 END ***/ $output->writeln('Date Crontab job end...'); } private function test(){ echo "test\r\n"; } }

2.配置command.php文件,位置在application/command.php

<?php return ['app\admin\command\Test'];
  • 1
  • 2

3.運行test命令

打開命令行,運行php think Test命令test命令execute方法中運行的方法就會運行

4.在應用根目錄新建bat文件

task.bat文件

D:
cd D:\xampp\htdocs\autobet php think Test
  • 1
  • 2
  • 3

5.將bat文件添加到服務器計划任務

這個根據window和Linux系統不一樣,定時任務設置方法也不同,可以自行百度,我用的是本地的windows服務,詳情看百度經驗:Windows計划任務設置,定時執行指定腳本


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM