PHP定時執行任務的3種方法詳解(window下,linux下,瀏覽器下)


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定時執行的代碼:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?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>' ;
   echo round (( $etime -stime),4); //程序執行時間

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

總結:

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

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

http://www.jb51.net/article/76720.htm


免責聲明!

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



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