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

首頁 > 開發 > PHP > 正文

php定時執行任務實現方法詳解

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

每個PHP腳本都限制了執行時間,所以我們需要通過 set_time_limit 來設置一個腳本的執行時間為無限長,然后使用 flush() 和 ob_flush() 來清除服務器緩沖區,隨時輸出腳本的返回值,當我們執行后,每隔5秒鐘,我們會得到一行 Hello World,代碼如下:

  1. header("Content-Type: text/plain"); 
  2. set_time_limit(0); 
  3.  
  4. $infoString = "Hello World" . "n"
  5. while( isset($infoString) ) 
  6. {//開源代碼Vevb.com 
  7. echo $infoString
  8. flush(); 
  9. ob_flush(); 
  10. sleep(5); 

例,代碼如下:

  1. <?php  
  2. ignore_user_abort();           // 即使Client斷開(如關掉瀏覽器),PHP腳本也可以繼續執行.  
  3. set_time_limit(0);             // 執行時間為無限制,php默認的執行時間是30秒,通過set_time_limit(0)可以讓程序無限制的執行下去  
  4. $interval=20;               // 時間間隔 單位 秒  
  5. $key_file="key.txt";          // 配置文件  
  6. if (isset($_GET['s']))  
  7. {  
  8.   if ($_GET['s']=="0"){        // 停止工作,但不退出  
  9.     $s="false";  
  10.     echo "Function is off";  
  11.   }  
  12.   elseif ($_GET['s']=="1"){      // 工作  
  13.     $s="true";  
  14.     echo "Function is on";  
  15.   }  
  16.   elseif ($_GET['s']=="2"){      // 退出  
  17.     $s="die";  
  18.     echo "Function exited";  
  19.   }  
  20.   else  
  21.     die("Err 0:stop working 1:working 2:exit");  
  22.   $string = "<?phpn return "".$s."";n?>";  
  23.   write_inc($key_file,$string,true);  
  24.   exit();  
  25. }  
  26. if(file_exists($key_file)){  
  27.   do{  
  28.     $mkey = include $key_file;  
  29.     if ($mkey=="true"){          // 如果工作  
  30.     /////////////////////  工作區間  //////////////////////////////////  
  31.       $showtime=date("Y-m-d H:i:s");  
  32.       $fp = fopen('func.txt','a');  
  33.       fwrite($fp,$showtime."n");  
  34.       fclose($fp);  
  35.     ///////////////////////////////////////////////////////////////////  
  36.     }  
  37.     elseif ($mkey=="die"){        // 如果退出  
  38.       die("I am dying!");  
  39.     }  
  40.     sleep($interval);           // 等待$interval分鐘  
  41.   }while(true);  
  42. }  
  43. else  
  44.   die($key_file." doesn't exist !");  
  45. function write_inc($path,$strings,$type=false)  
  46. {    
  47.   $path=dirname(__FILE__)."/".$path;  
  48.   if ($type==false)  
  49.     file_put_contents($path,$strings,FILE_APPEND);  
  50.   else  
  51.     file_put_contents($path,$strings);  
  52. }  
  53. ?> 

個人覺得在php定時執行任務還是有點復雜并且不好使用,下面我來介紹在操作系統中計劃任務來實現,在網上找了些WINDOWS執行PHP的計劃任務的方法,有一個寫得很全,可惜在我這竟然沒通過,最后不得不綜合各門派的方法,才能在我這運行成功.

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

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

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

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

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

相應目錄自己改上.

3、建立WINDOWS計劃任務:

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

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

linux系統:

我們可以借助Linux的Crontab工具來穩定可靠地觸發PHP執行任務,下面介紹Crontab的兩種方法.

一、在Crontab中使用PHP執行腳本

就像在Crontab中調用普通的shell腳本一樣,具體Crontab用法,使用PHP程序來調用PHP腳本.

每一小時執行myscript.php如下:

# crontab -e

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

/usr/local/bin/php 

為PHP程序的路徑.

二、在Crontab中使用URL執行腳本

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

1.00 * * * * lynx -dump /myscript.php

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

1.*/5 * * * * /usr/bin/curl -o temp.txt /myscript.php

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

1.*/10 * * * * /usr/bin/wget -q -O temp.txt /myscript.php

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 衡阳市| 开封市| 固原市| 辽中县| 怀远县| 文化| 营山县| 高清| 九龙城区| 遂昌县| 镇平县| 蓝山县| 昭平县| 炎陵县| 曲水县| 孟州市| 内江市| 桐乡市| 高清| 云霄县| 汉中市| 兴山县| 堆龙德庆县| 滨海县| 龙岩市| 无极县| 樟树市| 枣阳市| 宁明县| 建宁县| 巴林左旗| 南平市| 吉林省| 敖汉旗| 阳原县| 大方县| 乌鲁木齐县| 惠安县| 泗水县| 磐安县| 莒南县|