《PHP學(xué)習(xí):關(guān)于PHP定時(shí)發(fā)送服務(wù)的解決辦法》要點(diǎn):
本文介紹了PHP學(xué)習(xí):關(guān)于PHP定時(shí)發(fā)送服務(wù)的解決辦法,希望對(duì)您有用。如果有疑問(wèn),可以聯(lián)系我們。
一、定時(shí)發(fā)送任務(wù)解析PHP應(yīng)用
在進(jìn)行手機(jī)APP或者微信開(kāi)發(fā)的時(shí)候,經(jīng)常會(huì)有需要定時(shí)推送消息的場(chǎng)景.PHP應(yīng)用
定時(shí)發(fā)送又分為兩種:PHP應(yīng)用
一種是在開(kāi)發(fā)的時(shí)候固定時(shí)間,后臺(tái)管理人員只能選擇將要推送的消息;PHP應(yīng)用
另一種是后臺(tái)管理人員可以自由選擇推送的時(shí)間和消息;PHP應(yīng)用
二、解決方案PHP應(yīng)用
PHP本身是不支持定時(shí)發(fā)送的,因?yàn)镻HP是一個(gè)腳本語(yǔ)言.在大多數(shù)情況下,瀏覽器關(guān)閉,PHP也就不執(zhí)行了.大部分情況下都依賴于外部的一些小東西.PHP應(yīng)用
1、固定時(shí)間PHP應(yīng)用
大多數(shù)服務(wù)器系統(tǒng)都是windows或linux.PHP應(yīng)用
linux:使用CronTab定時(shí)執(zhí)行phpPHP應(yīng)用
首先,進(jìn)入命令行模式.作為服務(wù)器的linux一般都默認(rèn)進(jìn)入命令行模式的,當(dāng)然,我們管理服務(wù)器也一般通過(guò)putty等工具遠(yuǎn)程連接到服務(wù)器,為了方便,我們用root用戶登錄.在命令行中鍵入:PHP應(yīng)用
crontab -e
之后就會(huì)打開(kāi)一個(gè)文件,并且是非編輯狀態(tài),則是vi的編輯界面,通過(guò)敲鍵盤上的i,進(jìn)入編輯模式,就可以編輯內(nèi)容.這個(gè)文件中的每一行就是一個(gè)定時(shí)任務(wù),我們新建一行,就是新建一條定時(shí)任務(wù)(當(dāng)然是指這一行內(nèi)按照一定的格式進(jìn)行書寫).我們現(xiàn)在來(lái)舉個(gè)例子,增加一行,內(nèi)容如下:PHP應(yīng)用
00 * * * * lynx -dump https://www.yourdomain.com/script.php
這是什么意思呢?實(shí)際上上面這一行由兩部分組成,前面一部分是時(shí)間,后面一部分是操作內(nèi)容.例如上面這個(gè),PHP應(yīng)用
00 * * * *
就是指當(dāng)當(dāng)前時(shí)間的分鐘數(shù)為00時(shí),執(zhí)行該定時(shí)任務(wù).時(shí)間部分由5個(gè)時(shí)間參數(shù)組成,分別是:PHP應(yīng)用
分 時(shí) 日 月 周PHP應(yīng)用
第1列表示分鐘1~59 每分鐘用或者 */1表示,/n表示每n分鐘,例如*/8就是每8分鐘的意思,下面也是類推
第2列表示小時(shí)1~23(0表示0點(diǎn))
第3列表示日期1~31
第4列表示月份1~12
第5列標(biāo)識(shí)號(hào)星期0~6(0表示星期天)PHP應(yīng)用
整個(gè)句子的后面部分就是操作的具體內(nèi)容.PHP應(yīng)用
lynx -dump https://www.yourdomain.com/script.php
意思就是說(shuō)通過(guò)lynx訪問(wèn)這個(gè)url.我們?cè)谑褂弥兄饕玫絣ynx、curl、wget來(lái)實(shí)現(xiàn)對(duì)url的遠(yuǎn)程訪問(wèn),而如果要提高效率,直接用php去執(zhí)行本地php文件是最佳選擇,例如:PHP應(yīng)用
00 */2 * * * /usr/local/bin/php /home/www/script.php
這條語(yǔ)句就可以在每2小時(shí)的0分鐘,通過(guò)linux內(nèi)部php環(huán)境執(zhí)行script.php,注意,這里可不是通過(guò)url訪問(wèn),通過(guò)服務(wù)器環(huán)境來(lái)執(zhí)行哦,而是直接執(zhí)行,因?yàn)槔@過(guò)了服務(wù)器環(huán)境,所以效率當(dāng)然要 高很多.PHP應(yīng)用
好了,已經(jīng)添加了幾條需要的定時(shí)任務(wù)了吧.點(diǎn)擊鍵盤上的Esc鍵,輸入“:wq”回車,這樣就保存了設(shè)置的定時(shí)任務(wù),屏幕上也能看到提示創(chuàng)建了新的定時(shí)任務(wù).接下來(lái)就是好好寫你的script.php 了.
windows:PHP應(yīng)用
windows上和linux上有一個(gè)類似的cmd和bat文件,bat文件類似于shell文件,執(zhí)行這個(gè)bat文件,就相當(dāng)于依次執(zhí)行里面的命令(當(dāng)然,還可以通過(guò)邏輯來(lái)實(shí)現(xiàn)編程),所以,我們可以利用bat命 令文件在windows服務(wù)器上面實(shí)現(xiàn)PHP定時(shí)任務(wù).實(shí)際上在windows上定時(shí)任務(wù),和linux上道理是一樣的,只不過(guò)方法和途徑不同.好了下面開(kāi)始.PHP應(yīng)用
首先,在一個(gè)你覺(jué)得比較適當(dāng)?shù)奈恢脛?chuàng)建一個(gè)cron.bat文件,然后用文本編輯器打開(kāi)它(記事本都可以),在里面寫上這樣的內(nèi)容:PHP應(yīng)用
D:\php\php.exe -q D:\website\test.php
這句話的意思就是,使用php.exe去執(zhí)行test.php這個(gè)php文件,和上面的contab一樣,繞過(guò)了服務(wù)器環(huán)境,執(zhí)行效率也比較高.寫好之后,點(diǎn)擊保存,關(guān)閉編輯器.PHP應(yīng)用
接下來(lái)就是設(shè)置定時(shí)任務(wù)來(lái)運(yùn)行cron.bat.依次打開(kāi):“開(kāi)始C>控制面板C>任務(wù)計(jì)劃C>添加任務(wù)計(jì)劃”,在打開(kāi)的界面中設(shè)置定時(shí)任務(wù)的時(shí)間、密碼,通過(guò)選擇,把cron.bat掛載進(jìn)去.確定,這樣 一個(gè)定時(shí)任務(wù)就建立好了,在這個(gè)定時(shí)任務(wù)上右鍵,運(yùn)行,這個(gè)定時(shí)任務(wù)就開(kāi)始執(zhí)行了,到點(diǎn)時(shí),就會(huì)運(yùn)行cron.bat處理,cron.bat再去執(zhí)行php.PHP應(yīng)用
2、自由選擇時(shí)間PHP應(yīng)用
常用的博客系統(tǒng)wordpress有一個(gè)wp-corn文件來(lái)執(zhí)行博客的定時(shí)發(fā)送,博主以wp-corn為原型編寫了一個(gè)文件.PHP應(yīng)用
wp-corn是非常消耗服務(wù)器資源的一個(gè)策略.每個(gè)人訪問(wèn)博客的時(shí)候都會(huì)調(diào)用wp-corn文件(讀取當(dāng)前服務(wù)器時(shí)間,判斷是否發(fā)送).缺陷是在訪問(wèn)人數(shù)比較小的時(shí)候不能及時(shí)發(fā)送,人數(shù)過(guò)多又造成服務(wù)器性能降低.PHP應(yīng)用
博主做項(xiàng)目的時(shí)候公司提供的是一臺(tái)windows服務(wù)器.采用的方法是在服務(wù)器上打開(kāi)一個(gè)頁(yè)面,每分鐘自動(dòng)刷新一次(簡(jiǎn)單的js腳本,不再提供代碼).PHP應(yīng)用
以上所述是小編給大家介紹的關(guān)于PHP定時(shí)發(fā)送服務(wù)的解決辦法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的.在此也非常感謝大家對(duì)維易PHP網(wǎng)站的支持!PHP應(yīng)用
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/932.html