国产探花免费观看_亚洲丰满少妇自慰呻吟_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://m.survivalescaperooms.com /script.php

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

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄冈市| 应城市| 抚松县| 奇台县| 卢龙县| 内丘县| 武义县| 华安县| 龙井市| 静宁县| 嘉定区| 许昌市| 永宁县| 马公市| 阿图什市| 宁海县| 楚雄市| 遂平县| 阿尔山市| 杂多县| 扶余县| 余江县| 西乌珠穆沁旗| 涿鹿县| 吉安县| 彭泽县| 织金县| 微博| 延寿县| 南平市| 宁海县| 四子王旗| 墨竹工卡县| 陇川县| 安化县| 长海县| 宜昌市| 镇雄县| 外汇| 涞水县| 萝北县|