2012-04-28 57 views
0

我有一個處理表單輸入的頁面。它做了幾件事,發送幾封電子郵件,並將客戶端重定向到另一頁。事情運作良好。使用CodeIgniter和PHP,有沒有辦法向客戶端發出重定向並繼續執行當前腳本?

發送電子郵件的問題很慢,如果我必須發送幾封電子郵件,響應時間是不可接受的。我想將客戶端重定向到結果頁面,然後發送電子郵件。不幸的是,CodeIgniter中的redirect()調用結束執行。

有沒有辦法做302重定向,並允許腳本的執行繼續?

302重定向標頭被刷新很重要。這可以,但不是必需的,該連接被關閉。重要的是用戶在之前得到的電子郵件發送前重定向,以便不必等待電子郵件發送完成。

回答

2

我認爲使用消息隊列比坐在那裏的殭屍進程更合適。基本上,當採取這個行動時,將作業轉儲到電子郵件正文,主題等等的作業隊列中。然後設置一個cron作業,每隔兩分鐘讀取一次該隊列,然後發送發送電子郵件。

您還可以使用Amazon Simple Queue Service(http://aws.amazon.com/sqs/faqs/#What_can_I_do_with_Amazon_SQS)以及簡單電子郵件服務來創建可擴展的解決方案。

+0

你的解決方案是絕對正確的做法。但是,我正在尋找一個可以在此期間實現的快速解決方案,因爲我們不會花時間開發基於MQ的解決方案。 – 2012-04-28 11:52:45

相關問題