一、定時發(fā)送任務(wù)解析
在進行手機APP或者微信開發(fā)的時候,經(jīng)常會有需要定時推送消息的場景。
定時發(fā)送又分為兩種:
一種是在開發(fā)的時候固定時間,后臺管理人員只能選擇將要推送的消息;
另一種是后臺管理人員可以自由選擇推送的時間和消息;
二、解決方案
PHP本身是不支持定時發(fā)送的,因為PHP是一個腳本語言。在大多數(shù)情況下,瀏覽器關(guān)閉,PHP也就不執(zhí)行了。大部分情況下都依賴于外部的一些小東西。
1、固定時間
大多數(shù)服務(wù)器系統(tǒng)都是windows或linux。
linux:使用CronTab定時執(zhí)行php
首先,進入命令行模式。作為服務(wù)器的linux一般都默認進入命令行模式的,當然,我們管理服務(wù)器也一般通過putty等工具遠程連接到服務(wù)器,為了方便,我們用root用戶登錄。在命令行中鍵入:
crontab -e
之后就會打開一個文件,并且是非編輯狀態(tài),則是vi的編輯界面,通過敲鍵盤上的i,進入編輯模式,就可以編輯內(nèi)容。這個文件中的每一行就是一個定時任務(wù),我們新建一行,就是新建一條定時任務(wù)(當然是指這一行內(nèi)按照一定的格式進行書寫)。我們現(xiàn)在來舉個例子,增加一行,內(nèi)容如下:
00 * * * * lynx -dump https://www.yourdomain.com/script.php
這是什么意思呢?實際上上面這一行由兩部分組成,前面一部分是時間,后面一部分是操作內(nèi)容。例如上面這個,
00 * * * *
就是指當當前時間的分鐘數(shù)為00時,執(zhí)行該定時任務(wù)。時間部分由5個時間參數(shù)組成,分別是:
分 時 日 月 周
第1列表示分鐘1~59 每分鐘用或者 */1表示,/n表示每n分鐘,例如*/8就是每8分鐘的意思,下面也是類推
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
整個句子的后面部分就是操作的具體內(nèi)容。
lynx -dump https://www.yourdomain.com/script.php
意思就是說通過lynx訪問這個url。我們在使用中主要用到lynx、curl、wget來實現(xiàn)對url的遠程訪問,而如果要提高效率,直接用php去執(zhí)行本地php文件是最佳選擇,例如:
00 */2 * * * /usr/local/bin/php /home/www/script.php
這條語句就可以在每2小時的0分鐘,通過linux內(nèi)部php環(huán)境執(zhí)行script.php,注意,這里可不是通過url訪問,通過服務(wù)器環(huán)境來執(zhí)行哦,而是直接執(zhí)行,因為繞過了服務(wù)器環(huán)境,所以效率當然要 高很多。
好了,已經(jīng)添加了幾條需要的定時任務(wù)了吧。點擊鍵盤上的Esc鍵,輸入“:wq”回車,這樣就保存了設(shè)置的定時任務(wù),屏幕上也能看到提示創(chuàng)建了新的定時任務(wù)。接下來就是好好寫你的script.php 了。
windows:
windows上和linux上有一個類似的cmd和bat文件,bat文件類似于shell文件,執(zhí)行這個bat文件,就相當于依次執(zhí)行里面的命令(當然,還可以通過邏輯來實現(xiàn)編程),所以,我們可以利用bat命 令文件在windows服務(wù)器上面實現(xiàn)PHP定時任務(wù)。實際上在windows上定時任務(wù),和linux上道理是一樣的,只不過方法和途徑不同。好了下面開始。
首先,在一個你覺得比較適當?shù)奈恢脛?chuàng)建一個cron.bat文件,然后用文本編輯器打開它(記事本都可以),在里面寫上這樣的內(nèi)容:
D:\php\php.exe -q D:\website\test.php
這句話的意思就是,使用php.exe去執(zhí)行test.php這個php文件,和上面的contab一樣,繞過了服務(wù)器環(huán)境,執(zhí)行效率也比較高。寫好之后,點擊保存,關(guān)閉編輯器。
接下來就是設(shè)置定時任務(wù)來運行cron.bat。依次打開:“開始–>控制面板–>任務(wù)計劃–>添加任務(wù)計劃”,在打開的界面中設(shè)置定時任務(wù)的時間、密碼,通過選擇,把cron.bat掛載進去。確定,這樣 一個定時任務(wù)就建立好了,在這個定時任務(wù)上右鍵,運行,這個定時任務(wù)就開始執(zhí)行了,到點時,就會運行cron.bat處理,cron.bat再去執(zhí)行php。
2、自由選擇時間
常用的博客系統(tǒng)wordpress有一個wp-corn文件來執(zhí)行博客的定時發(fā)送,博主以wp-corn為原型編寫了一個文件。