您好,登錄后才能下訂單哦!
這篇文章主要介紹了php中如何實現定時任務,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
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中如何實現定時任務內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。