這確實取決於你的腳本是做什麼它發回,但如果你可以使用AJAX,這將是該方式去。它不僅會讓你長時間運行請求,而且不會阻塞瀏覽器,讓用戶自由地繼續使用當前頁面,直到請求完成。
實現類似此類功能的最佳方式是設置ignore_user_abort並關閉時間限制。這樣你可以讓腳本在後臺運行。這樣腳本可以在用戶瀏覽您的網站時繼續運行。他們甚至不必呆在同一頁面上。所以你通過AJAX發起請求來啓動它。在該腳本中有一個循環,用於更新用戶會話的進度。
ini_set('session.use_cookies', 0); //don't spam the user with cookies for each session_start()
while(...) {
session_start();
//update status to the user's session
session_write_close();
//sleep or whatever
}
很明顯,這不一定是一個循環。您可以在開始處理信息之前關閉會話,然後打開它,設置狀態並再次關閉。一次只有一個腳本可以訪問用戶的會話,因此您需要確保此過程不會影響用戶的會話。
然後,所有你需要做的就是讓您網站上,讓用戶知道什麼時候不管它是你正在做的是完成和/或爲他們提供文件/輸出/等的網頁運行的腳本。
這樣就減少了用戶繼續瀏覽您的網站的腳本運行時,不會強迫他們坐在一個頁面在加載指示燈59。。
^同意。你會發現很多人在棧上更有幫助,當他們看到你確實接受,並給他們的聲譽,當他們把自己的時間來幫助你與你的問題;) – Brian 2012-03-02 20:46:18
你需要的是分析,這樣你就可以找出哪些部分是什麼你頁面需要很長時間才能完成然後你可以加速這些部分。 – Arjan 2012-03-02 20:50:56
這是事情 - 大約3/4的時間涉及到聯繫遠程服務器。無論我的網站有多少流量,此服務器的速度都不會改變。您是否認爲即使我通過URL直接運行腳本,瀏覽器仍然有機會以高流量超時運行? – Hope4You 2012-03-02 20:55:13