天天看點

*php-cgi如何使用(php cli模式執行php檔案)

需求:如果使用浏覽器,發郵件100萬封郵件。這個時候浏覽器就不能動了要一直在發郵件這個頁面打開着,因為你一切換頁面發郵件這個任務就不會執行了。而且有什麼異常出現任務挂了,可能會導緻給某個使用者發好幾封。

Php的CLI模式的好處是,執行php程式,不需要浏覽器,也不需要啟動伺服器

什麼是Php的cli呢??

相信下圖大家都不陌生,隻是不知道如何使用而已

*php-cgi如何使用(php cli模式執行php檔案)

win需要通過cmd來執行(我的是phpstudy內建環境php.exe就在php-7.0.12-nts下面)

*php-cgi如何使用(php cli模式執行php檔案)

下圖是test.php檔案中的代碼

*php-cgi如何使用(php cli模式執行php檔案)

使用cli執行:

*php-cgi如何使用(php cli模式執行php檔案)
*php-cgi如何使用(php cli模式執行php檔案)

程序退出之後,如何來完成隊列中沒有完成的任務呢??

通過exec函數來執行cli的指令,進而觸發隊列的執行(在php檔案中觸發隊列)。說白了也就是給php放到win7的背景中去跑

使用浏覽器執行:

*php-cgi如何使用(php cli模式執行php檔案)

浏覽器通路:cli_test.php這個檔案

*php-cgi如何使用(php cli模式執行php檔案)
*php-cgi如何使用(php cli模式執行php檔案)

使用phpcli模式測試發郵件

思路:

1、根據條件查需要發郵件的,收件人郵箱号

2、封裝郵件類庫的domo。

判斷,第1步查到就發(輪詢每次查n條),.

查不到就break終止 (查不到說明不需要發)

3、使用cmd的cli調用這個檔案進行發送

ajax異步觸發郵件隊列

*php-cgi如何使用(php cli模式執行php檔案)

相當于第1步和第2步同時執行;

第3步:拿ajax觸發;

第4步的do_queue.php檔案中寫的就是cli_exec.php中的一樣(使用cli執行quexe.php檔案);

第5步的quexe.php檔案中寫的和cli_test.php中的一樣(循環讀取隊清單,調類庫的方法發送郵件);

看這的時候,建議先學習下http://blog.csdn.net/qq_33862644/article/details/79339532發郵件的原理,和調類庫的方法(當然給這類庫封裝下)建議參考http://blog.csdn.net/qq_33862644/article/details/79339967

此思路的亮點是:

隻要有人來注冊,就可以執行第5步,會給上次執行不成功的任務,執行成功。以此類推

注意:隊清單中隻插入郵箱