嗨,我試圖執行一個長期運行請求(行動)在後臺。Yii Php執行異步後臺請求
function actionRequest($id){
//execute very long process here in background but continue redirect
Yii::app()->user->setFlash('success', "Currently processing your request you may check it from time to time.");
$this->redirect(array('index', 'id'=>$id));
}
我想要實現是沒有用戶的請求等待被處理,因爲它通常需要5-10分鐘,並請求通常都到了超時,甚至如果我設置超時時間,等待5-10分鐘。不是一個好的用戶體驗。
所以我想立即返回到頁面通知用戶他/她的請求正在處理中,而他仍然可以瀏覽,並在應用程序中做其他事情,然後他/她可以返回到並看到他/她的請求已被處理。
我已經看過Yii擴展backjob,它的工作,重定向立即執行(不知何故一個後臺請求),但當做其他事情,如在網站導航,它不會加載,似乎請求仍然存在,並且在請求完成之前我無法繼續使用該應用程序。
一個類似的擴展runactions承諾同樣的事情,但我甚至不能讓它工作,它說它'觸及一個網址',就像一場火災和遺忘的工作,但不起作用。
我也試過查看Gearman,RabbitMQ等郵件排隊服務,但技術性很強,我甚至無法在我的Windows機器上安裝Gearman,因此「農業」服務對我來說不起作用。後臺處理的一些答案包括CRON和AJAX,但聽起來不太好,還有很多問題。
有異步後臺處理有任何其他解決方法嗎?我真的很努力地尋求這個,我真的不是在尋找先進/複雜的解決方案,比如「把工作交給幾臺機器」等等。非常感謝你!