這篇文章主要介紹了php中如何實(shí)現(xiàn)定時(shí)任務(wù),具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
公司專注于為企業(yè)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、商城網(wǎng)站建設(shè),微信小程序,軟件按需開發(fā)網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,成都創(chuàng)新互聯(lián)公司更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
php實(shí)現(xiàn)定時(shí)任務(wù)的方法有:1、利用linux系統(tǒng)下的crontab來(lái)實(shí)現(xiàn);2、利用ignore_user_abort函數(shù)來(lái)實(shí)現(xiàn);3、利用file_get_contents函數(shù)來(lái)實(shí)現(xiàn)。
一、服務(wù)器定時(shí)任務(wù)
服務(wù)器定時(shí)任務(wù),其實(shí)就是unix系統(tǒng)下的crontab實(shí)現(xiàn),具體的設(shè)置:Linux定時(shí)任務(wù)crontab;不過(guò)除了直接定時(shí)讀取php腳本的方式,我們還可以用定時(shí)調(diào)用接口的方式。
(學(xué)習(xí)視頻推薦:java視頻教程)
運(yùn)行腳本時(shí):
*/1 * * * * php /data/www/cron.php 每分鐘執(zhí)行cron.php
URL方式調(diào)用:
lynx方式:*/1 * * * * lynx -dump http://www.xxxxxxx.com/cron.php(-dump選項(xiàng)來(lái)把URL的輸出轉(zhuǎn)換來(lái)標(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” 選項(xiàng),把腳本的輸出轉(zhuǎn)儲(chǔ)到臨時(shí)文件temp.txt)
wget方式:*/1 * * * * /usr/bin/wget -q -O temp.txt http://www.xxxxxxx.com/cron.php(q 選項(xiàng)表示安靜模式。”-O temp.txt” 表示輸出會(huì)發(fā)送到臨時(shí)文件。)
以上方式,是將php腳本放在可以用url訪問(wèn)的地址地中,比如http://www.xxxxxx.com/cron.php,定時(shí)調(diào)用觸發(fā)任務(wù)。
二、ignore_user_abort()方式
ignore_user_abort() 函數(shù)設(shè)置與客戶機(jī)斷開是否會(huì)終止腳本的執(zhí)行。
先使用一個(gè)cron.php文件來(lái)控制腳本的終止,cron.php內(nèi)容為:
<?php return 1; ?>
腳本php文件為:
<?php ignore_user_abort();//關(guān)掉瀏覽器,PHP腳本也可以繼續(xù)執(zhí)行. set_time_limit(0);// 通過(guò)set_time_limit(0)可以讓程序無(wú)限制的執(zhí)行下去 $interval=60*30;// 每隔半小時(shí)運(yùn)行 do{ $run = include 'config.php'; if(!$run) die('process abort'); //return 0 時(shí), 終止 //TODO 該干啥干啥 sleep($interval);// 等待5分鐘 } while(true);
通過(guò)改變cron.php的return 0 , 來(lái)實(shí)現(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 一段時(shí)間之后通過(guò)訪問(wèn)自身的方式繼續(xù)執(zhí)行,這樣就能保證每個(gè)PHP腳本執(zhí)行時(shí)間不會(huì)太長(zhǎng),不受time_out的限制。因?yàn)槊恳淮我淮窝h(huán)php文件都是獨(dú)立執(zhí)行,所以這種方法,避免了time_out的限制。 但是最好和上邊一樣 加上控制代碼cron.php,以便能夠終止進(jìn)程。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享php中如何實(shí)現(xiàn)定時(shí)任務(wù)內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!
分享題目:php中如何實(shí)現(xiàn)定時(shí)任務(wù)
網(wǎng)頁(yè)地址:http://aaarwkj.com/article16/gihjgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供、網(wǎng)站維護(hù)、面包屑導(dǎo)航、關(guān)鍵詞優(yōu)化、搜索引擎優(yōu)化、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)