我要尋找一個解決方案,使PHP頁面將加載在它的所有其他信息說的內容/圖像如有然後做一個動作的動作,其將需要一些時間來完成並顯示其結果。我想PHP頁面與其他信息第一次加載&然後做
由於操作需要很長時間,PHP頁面加載速度太慢。我希望我的客戶先看到頁面,然後執行最後顯示結果的操作。
我試圖與ob_start()&平齊(),但沒有成功。 它可能需要Javascript來啓動我認爲如此的操作。但我怎麼能這樣做。
我要尋找一個解決方案,使PHP頁面將加載在它的所有其他信息說的內容/圖像如有然後做一個動作的動作,其將需要一些時間來完成並顯示其結果。我想PHP頁面與其他信息第一次加載&然後做
由於操作需要很長時間,PHP頁面加載速度太慢。我希望我的客戶先看到頁面,然後執行最後顯示結果的操作。
我試圖與ob_start()&平齊(),但沒有成功。 它可能需要Javascript來啓動我認爲如此的操作。但我怎麼能這樣做。
您需要加載沒有「慢速呼叫」的頁面。在onload事件中或在網頁末尾的腳本中,執行XHR呼叫到服務器以獲取慢速數據。默認情況下該調用是異步的,因此用戶可以在等待呼叫返回的同時與網頁進行交互。在這一點上,您將獲取數據並使用JavaScript將其轉換爲HTML。
你可以給一些鏈接,做相同的引用。以便我可以理解工作並在我的工作 – 2010-12-17 20:29:30
這是一個PHP的操作?由於php是一種服務器端語言,它在用戶收到http響應之前執行。所以你必須先建立網站。將其發送給用戶。比對需要執行操作的腳本發出新的請求(例如使用ajax)。這是應執行的訂單代碼。
一些handly鏈接。
你的onload使用,在很短的時間控制定時事件。這將讓屏幕畫出來。
當事件觸發時,使用AJAX技術啓動您的漫長過程。
您無法長時間嘗試在服務器上運行進程。經過一段時間(通常爲300秒),一個失控計時器將殺死你的服務器線程。爲避免這種情況,您的漫長過程必須使用輪詢技術,或者不在正常的Web服務器環境下運行。
如果要超過20秒或30秒運行,然後保存某種形式的會話狀態,並返回一個「工作」的答覆。在關閉下一個週期之前,使用回覆更新用戶的進度。這會加載並定位自己的會話數據,並且運行很短的時間。
警告 - php會仔細地串行化會話數據的所有訪問權限,所以當服務器處理一個循環時,用戶發送的任何內容都將等待該循環結束,然後才能處理。
jQuery讓這非常容易,因爲這樣...
<script type="text/javascript" src="jquery-1.4.4.min.js"></script> <!-- Put this in your web page's head -->
<script type="text/javascript">
$(function() {
$('wherever-you-need-the-resulting-html-to-go').html('<img src="loading-image.gif" alt="Loading" />');
$.ajax({
url: 'wherever-your-slow-code-is.php',
success: function(msg) {
$('wherever-you-need-the-resulting-html-to-go').html(msg);
}
});
});
</script>
一樣始終。在'onLoad'中。 – 2010-12-17 20:22:23
您的意思是用JavaScript。請指定 – 2010-12-17 20:23:49
是的,Javascript(AJAX)是這種功能的常用選項。我可以推薦查看jQuery。與自己編寫Ajax相比,這使得Ajax變得更容易。 – 2010-12-17 20:32:16