首頁  >  文章  >  後端開發  >  php實作定時任務有哪幾種方法

php實作定時任務有哪幾種方法

王林
王林原創
2020-11-10 11:38:022410瀏覽

php實作定時任務的方法有:1.利用linux系統下的crontab來實作;2、利用ignore_user_abort函數來實作;3、利用file_get_contents函數來實作。

php實作定時任務有哪幾種方法

一、伺服器定時任務

伺服器定時任務,其實就是unix系統下的crontab實現,具體的設定:Linux定時任務crontab;不過除了直接定時讀取php腳本的方式,我們還可以用定時呼叫介面的方式。

(學習影片推薦:java影片教學

執行腳本時:

*/1 * * * * php /data/www/cron.php  每分鐘執行cron.php

URL方式呼叫:

lynx方式:*/1 * * * *  lynx -dump http://www. xxxxxxx.com/cron.php(-dump選項來把URL的輸出轉換來標準輸出)

curl方式:*/1 * * * *  /usr/bin/curl -o temp.txt http: //www.xxxxxxx.com/cron.php(Curl預設在標準輸出顯示輸出。使用「curl -o」選項,把腳本的輸出轉儲到臨時檔案temp.txt)

wget方式: */1 * * * * /usr/bin/wget -q -O temp.txt http://www.xxxxxxx.com/cron.php(q 選項表示安靜模式。」-O temp.txt」 表示輸出會傳送到臨時檔案。)

以上方式,是將php腳本放在可以用url存取的位址地中,例如http://www.xxxxxx.com/cron.php,定時呼叫觸發任務。

二、ignore_user_abort()方式

ignore_user_abort() 函數設定與客戶機中斷是否會終止腳本的執行。

先使用一個cron.php檔案來控制腳本的終止,cron.php內容為:

<?php
return 1;
?>

腳本php檔案為:

<?php
ignore_user_abort();//关掉浏览器,PHP脚本也可以继续执行.
set_time_limit(0);// 通过set_time_limit(0)可以让程序无限制的执行下去
$interval=60*30;// 每隔半小时运行
do{
$run = include &#39;config.php&#39;;
if(!$run) die(&#39;process abort&#39;);  //return 0 时, 终止
//TODO 该干啥干啥
sleep($interval);// 等待5分钟
}
while(true);

透過改變cron.php的return 0 , 來實現停止程序。但是這種方法,不好記憶體管理。

三、file_get_contents()方式

<?php
$time=15;
$url="http://".$_SERVER[&#39;HTTP_HOST&#39;].$_SERVER[&#39;REQUEST_URI&#39;];
//TODO
sleep($time);
file_get_contents($url);
?>

php腳本sleep 一段時間之後透過存取自身的方式繼續執行,這樣就能保證每個PHP腳本執行時間不會太長,不受time_out的限制。因為每次一次循環php檔案都是獨立執行,所以這個方法,避免了time_out的限制。但是最好和上邊一樣 加上控制碼cron.php,以便能夠終止進程。

相關推薦:php培訓

以上是php實作定時任務有哪幾種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn