我們正在構建一個分析應用程序。這將需要用戶等待30秒,而我們從其他來源獲取數據並進行一些計算,然後再顯示給用戶。PHP在後臺獲取數據
當我們在後臺獲取數據時,有沒有什麼辦法可以向用戶顯示一個等待頁面,而不是在我們獲取數據時將頁面加載30秒。
任何人都可以告訴我們如何做到這一點嗎?
我們正在構建一個分析應用程序。這將需要用戶等待30秒,而我們從其他來源獲取數據並進行一些計算,然後再顯示給用戶。PHP在後臺獲取數據
當我們在後臺獲取數據時,有沒有什麼辦法可以向用戶顯示一個等待頁面,而不是在我們獲取數據時將頁面加載30秒。
任何人都可以告訴我們如何做到這一點嗎?
注:收藏夾,你必須包括收藏JS
<script>
function onload_wating()
{
var syncronize_target=SITE_URL+'your_controllername/action_timer/';
$.lightbox(syncronize_target, {
width : 450,
height : 260,
'modal' : true,
'onOpen' : function() {
$(".jquery-lightbox-button-close").css({"visibility":"hidden","display":"none"});
}
});
}
onload_wating();
<script>
action_timer.ctp
注:倒計時,你必須包括jQuery的倒計時 - >http://keith-wood.name/countdown.html
<script>
$(function() {
$('#syncronize_header_timer').countdown(
{
until:+50,
format: 'MS',
onExpiry: ltliftOff
});
});
function ltliftOff() {
$.lightbox().close();
}
<script>
<div id="syncronize_header_timer" ></div>
==========================================
上面的onload _wating()這個函數打開燈箱並且向控制器動作進行ajax查詢並打開action_timer.ctp
在action_timer.ctp中,我們使用倒數計時器。這個計時器計數到50,然後它自動關閉。
這50秒之間,你可以從數據庫中檢索你的數據。
一種方法是使用AJAX通過HTTP GET請求在服務器上輪詢頁面。
您可以使用數據庫甚至更好APC
編輯:
因爲我們不是在談論一個文件上傳這裏,會話可能比APC_UPLOAD_PROGRESS一個更好的選擇。會話提供的每個用戶存儲在這裏應該是理想的,並且可以由不同的商店如APC支持。
是啊我提取的數據將在顯示前存儲在數據庫本身 – 2012-07-21 04:57:56
如果流量很大,數據庫可能不是放置輪詢機制後端的最佳位置。 APC是駐留在Web服務器上的內存,所以應該對性能更好,但對於較小的負載,我認爲數據庫應該沒問題。 – quickshiftin 2012-07-21 04:59:39
我會檢查出來。這不適用於共享服務器? – 2012-07-21 05:10:03