萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> php編程 >> php怎麼寫定時任務?PHP定時執行任務的3種方法詳解

php怎麼寫定時任務?PHP定時執行任務的3種方法詳解

php怎麼寫定時任務?本文詳細介紹了PHP定時執行任務的3種方法,不懂的同學可以參考一下。

PHP定時執行的三種方式實現

  • 1、windows 的計劃任務

  • 2、linux的腳本程序

  • 3、讓web浏覽器定時刷新

具體實現
1、windows計劃任務

PHP很少在win服務器上跑,具體實現也不再深究,看網上實現的原理大概是寫bat腳本,然後讓window任務添加執行這個bat腳本。
2、linux 的腳本實現
這裡主要使用到crontab這個命令,
使用方式 :

crontab   filecrontab [ -u user ] [ -u user ] { -l | -r | -e }

說明 :

crontab是用來讓使用者在固定時間或固定間隔執行程式之用

使用crontab寫shell腳本,然後讓PHP調用shell,這個是利用linux的特性,應該還不算PHP自身語言的特性

3、PHP實現定時執行計劃任務
使用php讓浏覽器刷新需要解決幾個問題
PHP腳本執行時間限制,默認的是30m 解決辦法:set_time_limit();或者修改PHP.ini 設置max_execution_time時間(不推薦)
如果客戶端浏覽器關閉,程序可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執行
如果程序一直執行很有可能會消耗大量的資源,解決辦法使用sleep使用程序休眠一會,然後在執行
PHP定時執行的代碼:

<?php

ignore_user_abort();//關掉浏覽器,PHP腳本也可以繼續執行.

set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執行下去

$interval=5;// 每隔5s運行

  

//方法1--死循環

do{

  echo'測試'.time().'
'

  sleep($interval);// 等待5s 

}while(true);

  

//方法2---sleep 定時執行

  require_once'./curlClass.php'//引入文件

    

  $curl=newhttpCurl();//實例化

  $stime=$curl->getmicrotime();

  for($i=0;$i<=10;$i++){

      

    echo'測試'.time().'
'

    sleep($interval);// 等待5s

      

  }

  ob_flush();

  flush();

  $etime=$curl->getmicrotime();

  echo'


'

  echoround(($etime-stime),4);//程序執行時間

測試的時候發現這個效率並不是很高。

總結:

個人感覺PHP定時執行任務的效率不是很高,建議關於定時執行任務的工作還是交給shell來做吧。

以上就是PHP定時執行任務的3種方法,對於前一篇文章結尾中提到的crontab這個命令,也進行了簡單介紹,希望大家能夠有所收獲。

copyright © 萬盛學電腦網 all rights reserved