我實際上正在嘗試將此應用程序應用於發送電子郵件的腳本。發送電子郵件部分需要幾秒鐘,這太長了。我想要的是第一個腳本做它的東西,並觸發另一個腳本(發送電子郵件),但我希望第一個腳本將控制權返回給用戶,而不用等待第二個腳本發送電子郵件。我已經考慮調用另一個PHP腳本並在其他腳本完成之前將控制權返回給用戶
選項:
定時任務:爲此,我得有運行像每2分鐘一個cron作業。不可行!
PHP腳本激活一個cron作業,完成後自動關閉:好的,但我該怎麼做? PHP能做到這一點嗎?
我實際上正在嘗試將此應用程序應用於發送電子郵件的腳本。發送電子郵件部分需要幾秒鐘,這太長了。我想要的是第一個腳本做它的東西,並觸發另一個腳本(發送電子郵件),但我希望第一個腳本將控制權返回給用戶,而不用等待第二個腳本發送電子郵件。我已經考慮調用另一個PHP腳本並在其他腳本完成之前將控制權返回給用戶
選項:
定時任務:爲此,我得有運行像每2分鐘一個cron作業。不可行!
PHP腳本激活一個cron作業,完成後自動關閉:好的,但我該怎麼做? PHP能做到這一點嗎?
您也可以調用shell並手動調用PHP文件。不需要cron,也不需要等待。
http://www.php.net/manual/en/function.exec.php
從Notes
科
「如果程序開始使用此 功能,以便它繼續 在後臺運行,該程序的輸出 必須重定向到 文件或另一個輸出流,如果這樣做失敗 將導致PHP掛起,直到 程序的執行結束。
其他解決方案:
我用這種解決方案相當多...
哦,我試過你的解決方案,但我使用共享主機和守護進程PEAR庫要求我用一些選項重新編譯PHP。但如果我有我自己的服務器,這是我將要使用的方式:)謝謝 – 2011-02-26 06:38:25
我正在使用jQuery和AJAX爲PHP腳本做類似這樣的事情,這需要很長時間。
嗯,是的,我明白了,但在我的情況下,該腳本應該在POST後運行到另一個頁面,並重新檢查服務器端。所以,對我來說這不是一個安全的方法。 – 2011-02-26 06:40:14
你想用什麼東西叫beanstalkd
詳情:How can I get a list of all jobs in a beanstalk tube?
它可以讓你排隊工作(做1,然後2,然後3然後4)你甚至可以在服務器之間分發這些任務(對於php工作來說是的!)。
好吧,剛剛嘗試過,它在返回之前等待另一個腳本。 – 2011-02-24 11:46:27
「如果一個程序是用這個函數啓動的,爲了讓它繼續在後臺運行,程序的輸出必須被重定向到一個文件或另一個輸出流。否則會導致PHP掛起直到執行的程序結束。「 - 備註部分提到的 – JohnP 2011-02-24 11:50:47
很棒,謝謝!當我第一次嘗試時,它無緣無故地陷入了無限循環。所以我用/ usr/bin/php-cli感謝這個問題http://stackoverflow.com/questions/3615713/exec-cause-an-infinite-loop-of-starting-requested-program – 2011-02-26 06:36:26