溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php中如何實現(xiàn)定時任務(wù)

發(fā)布時間:2020-11-11 10:32:15 來源:億速云 閱讀:128 作者:小新 欄目:編程語言

這篇文章主要介紹了php中如何實現(xiàn)定時任務(wù),具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

php實現(xiàn)定時任務(wù)的方法有:1、利用linux系統(tǒng)下的crontab來實現(xiàn);2、利用ignore_user_abort函數(shù)來實現(xiàn);3、利用file_get_contents函數(shù)來實現(xiàn)。

一、服務(wù)器定時任務(wù)

服務(wù)器定時任務(wù),其實就是unix系統(tǒng)下的crontab實現(xiàn),具體的設(shè)置:Linux定時任務(wù)crontab;不過除了直接定時讀取php腳本的方式,我們還可以用定時調(diào)用接口的方式。

(學(xué)習(xí)視頻推薦:java視頻教程)

運行腳本時:

*/1 * * * * php /data/www/cron.php  每分鐘執(zhí)行cron.php

URL方式調(diào)用:

lynx方式:*/1 * * * *  lynx -dump http://www.xxxxxxx.com/cron.php(-dump選項來把URL的輸出轉(zhuǎn)換來標(biāo)準(zhǔn)輸出)

curl方式:*/1 * * * *  /usr/bin/curl -o temp.txt http://www.xxxxxxx.com/cron.php(Curl默認(rèn)在標(biāo)準(zhǔn)輸出顯示輸出。使用 “curl -o” 選項,把腳本的輸出轉(zhuǎn)儲到臨時文件temp.txt)

wget方式:*/1 * * * * /usr/bin/wget -q -O temp.txt http://www.xxxxxxx.com/cron.php(q 選項表示安靜模式?!?O temp.txt” 表示輸出會發(fā)送到臨時文件。)

以上方式,是將php腳本放在可以用url訪問的地址地中,比如http://www.xxxxxx.com/cron.php,定時調(diào)用觸發(fā)任務(wù)。

二、ignore_user_abort()方式

ignore_user_abort() 函數(shù)設(shè)置與客戶機斷開是否會終止腳本的執(zhí)行。

先使用一個cron.php文件來控制腳本的終止,cron.php內(nèi)容為:

<?php
return 1;
?>

腳本php文件為:

<?php
ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行.
set_time_limit(0);// 通過set_time_limit(0)可以讓程序無限制的執(zhí)行下去
$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 , 來實現(xiàn)停止程序。但是這種方法,不好內(nèi)存管理。

三、file_get_contents()方式

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

php腳本sleep 一段時間之后通過訪問自身的方式繼續(xù)執(zhí)行,這樣就能保證每個PHP腳本執(zhí)行時間不會太長,不受time_out的限制。因為每一次一次循環(huán)php文件都是獨立執(zhí)行,所以這種方法,避免了time_out的限制。 但是最好和上邊一樣 加上控制代碼cron.php,以便能夠終止進程。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享php中如何實現(xiàn)定時任務(wù)內(nèi)容對大家有幫助,同時也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,遇到問題就找億速云,詳細(xì)的解決方法等著你來學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI