国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php計劃任務的實現例子介紹

2024-05-04 21:47:48
字體:
來源:轉載
供稿:網友

最近由于項目需要定時對遠程數據庫上做一些處理,這里就需要做一個計劃任務樣子的東西了,經過努力,終于使用php實現了這個計劃任務,下面分享一下此次的實現過程.

本次使用php實現計劃任務主要使用了 ignore_user_abort() set_time_limit(0) sleep() 這三個函數.

PHP實例代碼如下:

  1. <?php  
  2. ignore_user_abort(); //即使Client斷開(如關掉瀏覽器),PHP腳本也可以繼續執行.  
  3. set_time_limit(0); // 執行時間為無限制,php默認的執行時間是30秒,通過set_time_limit(0)可以讓程序無限制的執行下去  
  4. $interval=60*5; // 每隔5分鐘運行  
  5. do{  
  6. $fp = fopen('test.txt','a');  
  7. fwrite($fp,'test');  
  8. fclose($fp);  
  9. sleep($interval); // 等待5分鐘  
  10. }while(true);  
  11. ?> 
  12. //具體的代碼如下: 
  13. <?php 
  14. ignore_user_abort();//該函數的作用是當用戶關掉瀏覽器后,PHP腳本也可以繼續執行. 
  15. set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執行下去 
  16. $interval=5;// 每隔5s運行 
  17. //方法1--死循環 
  18. do
  19.  echo '測試'.time().'<br/>';  
  20.  sleep($interval);// 等待5s     
  21. }while(true); 
  22. //方法2---sleep 定時執行 
  23. require_once './curlClass.php';//引入文件 
  24. $curl=new httpCurl('www.phpernote.com');//實例化 
  25. $stime=$curl->getmicrotime(); 
  26. for($i=0;$i<=10;$i++){ 
  27.  echo '測試'.time().'<br/>';  
  28.  sleep($interval);// 等待5s 
  29. ob_flush(); 
  30. flush(); 
  31. $etime=$curl->getmicrotime(); 
  32. echo '<hr>'
  33. echo round(($etime-stime),4);//程序執行時間Vevb.com 

函數int ignore_user_abort:

從函數名本身,可以解釋為,"忽略用戶的影響" ,因為所謂的用戶是指客戶端,即瀏覽器,所以進一步解釋為,"忽略瀏覽器的影響",那么影響指的是什么,影響指的是瀏覽器的關閉和異常.

也就是說有這個函數在的php程序,即使在瀏覽器關掉的時候,程序沒有執行完它還會繼續執行,直到執行完,比如說,你有一段代碼需要執行100秒,可是這個時間太長了,一般用戶等不及,在等了60秒的時候受不了就關了.

如果這個時候程序也隨之終止,很可能造成數據異常,不一致或是錯誤,你需要程序繼續運行,就可以用它了,它的參數就是真和假,真就是忽略,假就是不忽略.

在具體的實現過程中個人感覺PHP定時執行任務的效率并不高,建議關于定時執行任務的工作還是交給shell來做吧,相對來說,這個方法實現的太過勉強,而shell是專業級別的了。

linux的腳本程序

這里主要使用到crontab這個命令,使用方式:

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

說明:crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,使用crontab寫shell腳本,然后讓PHP調用shell,這個是利用linux的特性,應該還不算PHP自身語言的特性.

在Crontab中使用URL執行腳本

如果你的PHP腳本可以通過URL觸發,你可以使用lynx或curl或wget來配置你的Crontab.

下面的例子是使用Lynx文本瀏覽器訪問URL來每小時執行PHP腳本,Lynx文本瀏覽器默認使用對話方式打開URL,但是,像下面的,我們在lynx命令行中使用-dump選項來把URL的輸出轉換來標準輸出,代碼如下:

00 * * * * lynx -dump http://www.survivalescaperooms.com /script.php

下面的例子是使用CURL訪問URL來每5分執行PHP腳本,Curl默認在標準輸出顯示輸出,使用”curl -o”選項,你也可以把腳本的輸出轉儲到臨時文件,代碼如下:

*/5 * * * * /usr/bin/curl -o temp.txt http://www.survivalescaperooms.com /script.php 

下面的例子是使用WGET訪問URL來每10分執行PHP腳本,-q選項表示安靜模式,”-O temp.txt”表示輸出會發送到臨時文件,代碼如下:

*/10 * * * * /usr/bin/wget -q -O temp.txt http://www.survivalescaperooms.com /script.php

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂托克前旗| 平塘县| 南木林县| 朝阳市| 石门县| 瑞金市| 杭锦旗| 巢湖市| 曲水县| 温宿县| 东光县| 阜宁县| 长宁区| 星子县| 灌云县| 泰安市| 石台县| 珲春市| 昌图县| 乐昌市| 买车| 湘潭县| 邳州市| 大邑县| 凉山| 延吉市| 苍南县| 孟村| 汉中市| 津南区| 宣武区| 贞丰县| 陆川县| 通城县| 滁州市| 红原县| 吉木萨尔县| 临邑县| 勃利县| 宜都市| 柳江县|