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

首頁 > 開發(fā) > PHP > 正文

php計劃任務的實現(xiàn)方法,支持windows/linux下運行

2024-05-04 21:58:18
字體:
供稿:網(wǎng)友

文章介紹了利用php自身來運行計劃任務同時還介紹了在winows下利用winodows計劃任務來操作,還有在linux中利用linux的方法來實現(xiàn).

使用php讓瀏覽器刷新需要解決幾個問題

1.PHP腳本執(zhí)行時間限制,默認的是30m,解決辦法:set_time_limit();或者修改PHP.ini 設置max_execution_time時間(不推薦) 

2.如果客戶端瀏覽器關閉,程序可能就被迫終止,解決辦法:ignore_user_abort即使關閉頁面依然正常執(zhí)行 

3.如果程序一直執(zhí)行很有可能會消耗大量的資源,解決辦法使用sleep使用程序休眠一會,然后在執(zhí)行,代碼如下:

  1. ignore_user_abort();//關掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行. 
  2. set_time_limit(3000);// 通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去 
  3. $interval=5;// 每隔5s運行 
  4. //方法1--死循環(huán) 
  5. do
  6. echo '測試'.time().'
    '
    ;  
  7. sleep($interval);// 等待5s  
  8. }while(true); 
  9. //方法2---sleep 定時執(zhí)行 
  10. require_once './curlClass.php';//引入文件 
  11. $curl = new httpCurl();//實例化 
  12. $stime = $curl->getmicrotime(); 
  13. for($i=0;$i<=10;$i++){ 
  14. echo '測試'.time().'
    '
    ;  
  15. sleep($interval);// 等待5s 
  16. ob_flush(); 
  17. flush(); 
  18. $etime = $curl->getmicrotime(); 
  19. echo '
    '
  20. echo round(($etime-stime),4);//程序執(zhí)行時間 

WINDOWS中設置計劃任務執(zhí)行PHP文件

在網(wǎng)上找了些WINDOWS執(zhí)行PHP的計劃任務的方法,有一個寫得很全,可惜在我這竟然沒通過,最后不得不綜合各門派的方法,才能在我這運行成功.

1、寫一個PHP程序,命名為test.php,內(nèi)容如下所示:

  1. $fp = fopen("test.txt""a+"); 
  2.  fwrite($fpdate("Y-m-d H:i:s") . " 成功成功了!n"); 
  3.  fclose($fp); 
  4. ?> 

程序大膽地寫,什么includerequire盡管用,都沒問題.

2、新建Bat文件,命名為test.bat,內(nèi)容如下所示:

1 D:phpphp.exe -q D:websitetest.php  

//相應目錄自己改上

3、建立WINDOWS計劃任務:

開始–>控制面板–>任務計劃–>添加任務計劃,瀏覽文件夾選擇上面的bat文件,設置時間和密碼(登陸WINDOWS的),保存即可了.

4、over! 可以右鍵計劃任務點“運行”試試

Linux的Crontab執(zhí)行PHP腳本

一、在Crontab中使用PHP執(zhí)行腳本

就像在Crontab中調(diào)用普通的shell腳本一樣(具體Crontab用法),使用PHP程序來調(diào)用PHP腳本。

每一小時執(zhí)行myscript.php,代碼如下:

# crontab -e 

00 * * * * /usr/local/bin/php /home/john/myscript.php

/usr/local/bin/php為PHP程序的路徑。

二、在Crontab中使用URL執(zhí)行腳本

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

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

00 * * * * lynx -dump http://m.survivalescaperooms.com/myscript.php 

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

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

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

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

php定時計劃任務介紹2010-05-06 10:10以前對se特別感興趣,但是自己又不會java,lucene等搜索引擎開發(fā)工具,于是不斷挖掘php的功效。

最后發(fā)現(xiàn)php也可以做抓取,并且原理很易:直接獲取頁面源文件,然后通過正則或字符串的參照截取來獲取需要的信息,但是性能上不能和搜索引擎的多線程抓取相比。

實現(xiàn)了上一步之后,又思考著,如果抓取可以自動定時獲取,那么人工運行可執(zhí)行頁面也就省下來了。

后來也在一些php開源程序中了解到關于"計劃任務"的效果:可以定時運行某程序,比如數(shù)據(jù)庫備份,更新緩存,生成靜態(tài)頁面,生成網(wǎng)站地圖等.

最近由于項目需要定時更新遠程數(shù)據(jù)庫到本地,網(wǎng)上搜了搜,還真找到了.

ignore_user_abort();函數(shù)搭配set_time_limit(0);和sleep($interval);即可實現(xiàn)以上自動更新。

先給出一個基本的范式,其中有個人的測試程序,代碼如下:

  1. ignore_user_abort(); // run script in background 
  2. set_time_limit(0); // run script forever 
  3. $interval=30; // do every 15 minutes... 
  4. do
  5. $fp = fopen('text3.txt','a'); 
  6. fwrite($fp,'test'); 
  7. fclose($fp); 
  8. sleep($interval); // wait 15 minutes 
  9. }while(true); 
  10. ?> 

首先運行該程序,然后關閉該頁面,程序仍然運行中,test會每隔30秒的填補到text3.txt文件.

個人感覺PHP定時執(zhí)行任務的效率不是很高,建議關于定時執(zhí)行任務的工作還是交給shell來做吧,比較那才是王道.

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 义乌市| 沈阳市| 红河县| 阳原县| 绥中县| 同江市| 天津市| 易门县| 忻城县| 扬州市| 夏邑县| 汨罗市| 景宁| 江华| 定结县| 勃利县| 饶阳县| 水富县| 枣庄市| 遂平县| 台东市| 潢川县| 邵东县| 呼伦贝尔市| 南投县| 五原县| 清远市| 佛学| 延边| 民乐县| 隆林| 明溪县| 莱州市| 平南县| 依安县| 吉木乃县| 图木舒克市| 安陆市| 乐亭县| 香河县| 青州市|