首頁 >後端開發 >php教程 >如何解決PHP定時發送服務的問題

如何解決PHP定時發送服務的問題

不言
不言原創
2018-06-15 11:38:541706瀏覽

這篇文章主要介紹了關於PHP定時發送服務的解決辦法,需要的朋友可以參考下

#一、定時發送任務解析

  在進行手機APP或微信開發的時候,常常會有需要定時推播訊息的場景。

  定時發送又分為兩種:

    一種是在開發的時候固定時間,後台管理人員只能選擇將要推送的訊息;

    另一種是後台管理人員可以自由選擇推送的時間和訊息;

##二、解決方案

  PHP本身是不支援定時發送的,因為PHP是一個腳本語言。在大多數情況下,瀏覽器關閉,PHP也就不執行了。大部分情況下都依賴外部的一些小東西。

 

 1、固定時間

    大多數伺服器系統都是windows或linux。

      linux:使用CronTab定時執行php

          首先,進入命令列模式。身為伺服器的linux一般都預設進入命令列模式的,當然,我們管理伺服器也一般透過putty等工具遠端連接到伺服器,為了方便,我們用root使用者登入。在命令列中鍵入:

 crontab -e

          之後就會開啟一個文件,並且是非編輯狀態,則是vi的編輯介面,透過敲鍵盤上的i ,進入編輯模式,就可以編輯內容。這個文件中的每一行就是一個定時任務,我們新建一行,就是新建一條定時任務(當然是指這一行內按照一定的格式進行書寫)。我們現在來舉個例子,增加一行,內容如下:

00 * * * * lynx -dump https://www.yourdomain.com/script.php

          這是什麼意思呢?實際上上面這一行由兩個部分組成,前面一部分是時間,後面一部分是操作內容。例如上面這個,

00 * * * *

          就是指噹噹前時間的分鐘數為00時,執行該定時任務。時間部分由5個時間參數組成,分別為:

          分時日月週

#      分時日月週


#      n分鐘,例如*/8就是每8分鐘的意思,下面也是類推
          第2列表示小時1~23(0表示0點)
   第2列表示小時1~23(0表示0點)
   第1         第4列表示月份1~12

          第5列標識號星期0~6(0表示星期日)

                          。

lynx -dump https://www.yourdomain.com/script.php

          意思就是說透過lynx訪問這個url。我們在使用中主要使用到lynx、curl、wget來實現對url的遠端訪問,而如果要提高效率,直接用php去執行本地php檔案是最佳選擇,例如:

00 */2 * * * /usr/local/bin/php /home/www/script.php

          這條語句就可以在每2小時的0分鐘,透過linux內部php環境執行script.php,注意,這裡可不是透過url訪問,透過伺服器環境來執行哦,而是直接執行,因為繞過了伺服器環境,所以效率當然高很多。


          好了,已經添加了幾條需要的定時任務了吧。點選鍵盤上的Esc鍵,輸入「:wq」回車,這樣就儲存了設定的定時任務,螢幕上也能看到提示建立了新的定時任務。接下來就是好好寫你的script.php            了。

      windows:

          windows上和linux上有一個類似的cmd和bat文件,batcmd  windows上和linux上有一個類似的cmd和bat檔,bat透過邏輯來實現程式設計),所以,我們可以利用bat指令檔在windows伺服器上面實作PHP定時任務。其實在windows上計時任務,和linux上道理是一樣的,只不過方法和途徑不同。好了下面開始。

          首先,在一個你覺得比較適當的位置創建一個cron.bat文件,然後用文本編輯器打開它(記事本都可以),在裡面寫上這樣的內容:

D:\php\php.exe -q D:\website\test.php

          這句話的意思就是,使用php.exe去執行test.php這個php文件,和上面的contab一樣,繞過了伺服器環境,執行效率也比較高。寫好之後,點選儲存,關閉編輯器。 ###

          接下來就是設定定時任務來執行cron.bat。依序開啟:“開始–>控制面板–>任務計畫–>新增任務計畫”,在開啟的介面中設定定時任務的時間、密碼,透過選擇,把cron.bat掛載進去。確定,這樣          一個定時任務就建立好了,在這個定時任務上右鍵,運行,這個定時任務就開始執行了,到點時,就會運行cron.bat處理,cron.bat再去執行php。

  2、自由選擇時間

    常用的部落格系統wordpress有一個wp-corn檔案來執行部落格的定時發送,部落客以wp-corn為原型撰寫了一個文件。

    wp-corn是非常消耗伺服器資源的一個策略。每個人造訪部落格的時候都會呼叫wp-corn檔案(讀取目前伺服器時間,判斷是否發送)。缺陷是在訪問人數比較小的時候不能及時發送,人數過多又造成伺服器效能降低。

    部落客做專案的時候公司提供的是一台windows伺服器。採用的方法是在伺服器上開啟一個頁面,每分鐘自動刷新一次(簡單的js腳本,不再提供程式碼)。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

PHP的預定義介面解析

以上是如何解決PHP定時發送服務的問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn