2011-02-24 16 views
3

我實際上正在嘗試將此應用程序應用於發送電子郵件的腳本。發送電子郵件部分需要幾秒鐘,這太長了。我想要的是第一個腳本做它的東西,並觸發另一個腳本(發送電子郵件),但我希望第一個腳本將控制權返回給用戶,而不用等待第二個腳本發送電子郵件。我已經考慮調用另一個PHP腳本並在其他腳本完成之前將控制權返回給用戶

選項:
定時任務:爲此,我得有運行像每2分鐘一個cron作業。不可行!
PHP腳本激活一個cron作業,完成後自動關閉:好的,但我該怎麼做? PHP能做到這一點嗎?

回答

4

您也可以調用shell並手動調用PHP文件。不需要cron,也不需要等待。

http://www.php.net/manual/en/function.exec.php

Notes

「如果程序開始使用此 功能,以便它繼續 在後臺運行,該程序的輸出 必須重定向到 文件或另一個輸出流,如果這樣做失敗 將導致PHP掛起,直到 程序的執行結束。

+1

好吧,剛剛嘗試過,它在返回之前等待另一個腳本。 – 2011-02-24 11:46:27

+3

「如果一個程序是用這個函數啓動的,爲了讓它繼續在後臺運行,程序的輸出必須被重定向到一個文件或另一個輸出流。否則會導致PHP掛起直到執行的程序結束。「 - 備註部分提到的 – JohnP 2011-02-24 11:50:47

+0

很棒,謝謝!當我第一次嘗試時,它無緣無故地陷入了無限循環。所以我用/ usr/bin/php-cli感謝這個問題http://stackoverflow.com/questions/3615713/exec-cause-an-infinite-loop-of-starting-requested-program – 2011-02-26 06:36:26

1

其他解決方案:

  • 你的腳本把令牌某處(DB /文件系統),當郵件需要發送(令牌可以包含郵件代數據)
  • 守護程序(可用PHP編寫的)在後臺運行,尋找令牌和「吃」他們發送郵件

我用這種解決方案相當多...

+0

哦,我試過你的解決方案,但我使用共享主機和守護進程PEAR庫要求我用一些選項重新編譯PHP。但如果我有我自己的服務器,這是我將要使用的方式:)謝謝 – 2011-02-26 06:38:25

1

我正在使用jQuery和AJAX爲PHP腳本做類似這樣的事情,這需要很長時間。

+0

嗯,是的,我明白了,但在我的情況下,該腳本應該在POST後運行到另一個頁面,並重新檢查服務器端。所以,對我來說這不是一個安全的方法。 – 2011-02-26 06:40:14

相關問題