我有一個腳本來處理髮送電子郵件。可能會有數以千計的電子郵件發送。我想向用戶顯示一個頁面,上面寫着「您的郵件正在發送」的內容,但我不想讓該頁面實際發送郵件,因爲我不希望用戶看到一個空白頁面,直到腳本完成,我也不希望用戶不得不等待腳本完成。如何從PHP執行PHP腳本而不將用戶保留在頁面上?
我想通過一個ID列表到另一個PHP頁面(讓我們稱之爲run.php),並讓它執行,而無需用戶實際訪問它。所以我會將這些ID傳遞給開始執行的頁面,但是隨後加載當前頁面,顯示消息「您的消息正在發送」。
<?php
/* SESSION DATA HERE */
executeMailSend($ids);
?>
<html>
<head>
....
</head>
<body>
Your messages are being sent.
</body>
</html>
我想我可以使用ajax這樣的東西,但我寧願不要讓這依賴於客戶端編碼。
另外,如果可能的話,我需要讓腳本在後臺運行,從會話中啓動會話數據,我寧願不必將這些數據作爲單獨的變量傳遞。
此外,我不想使用任何像exec()或system()。
任何想法?
是什麼您尋找在PHP這限制了選項來創建一個異步任務的方式。 PHP腳本執行的生命週期通常是HTTP事務的生命週期。一旦請求被滿足並且完全響應(如你所期待的),該進程就會被終止。你唯一的選擇是在HTTP請求仍然打開的情況下完成任務 - 保持瀏覽器停止工作,並要求他們不要關閉會話,分離進程並允許它繼續運行,或者使用其他方法來調用進程用戶請求。 – JSON