php實作定時任務的方法有:1.利用linux系統下的crontab來實作;2、利用ignore_user_abort函數來實作;3、利用file_get_contents函數來實作。
一、伺服器定時任務
伺服器定時任務,其實就是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 'config.php'; if(!$run) die('process abort'); //return 0 时, 终止 //TODO 该干啥干啥 sleep($interval);// 等待5分钟 } while(true);
透過改變cron.php的return 0 , 來實現停止程序。但是這種方法,不好記憶體管理。
三、file_get_contents()方式
<?php $time=15; $url="http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; //TODO sleep($time); file_get_contents($url); ?>
php腳本sleep 一段時間之後透過存取自身的方式繼續執行,這樣就能保證每個PHP腳本執行時間不會太長,不受time_out的限制。因為每次一次循環php檔案都是獨立執行,所以這個方法,避免了time_out的限制。但是最好和上邊一樣 加上控制碼cron.php,以便能夠終止進程。
相關推薦:php培訓
以上是php實作定時任務有哪幾種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!