我正在構建一個小型的PHP/JavaScript應用程序,它將爲美國所有州的所有城市做一些處理。總計(52 x 25583)= 1330316或更少的項目需要處理。可以1330316 AJAX請求崩潰我的服務器?
每個項目的處理過程大概需要2-3秒,所以用戶可能不得不盯着這個頁面1-2小時(或者至少在他做其他事情時保持最小化)。
爲了給用戶最大的回饋,我想通過JavaScript控制頁面的處理,基本上是這樣的:
var current = 1;
var max = userItems.length; // 1330316 or less
process();
function process()
{
if (current >= max)
{
alert('done');
return;
}
$.post("http://example.com/process", {id: current}, function()
{
$("#current").html(current);
current ++;
process();
}
);
}
在HTML我將具有以下狀態消息,其
<div id="progress">
Please wait while items are processed.
<span id="current">0</span>/<span id="max">1330316</span> items have been processed.
</div>
希望你都可以看到我是多麼希望這工作:每當process()
函數被調用將被更新。
我唯一擔心的是,如果這些1330316請求同時發送到服務器,是否有可能會導致服務器崩潰?如果是這樣,如果我在服務器端PHP代碼中使用sleep(3);
對每個請求進行了額外的等待,那麼這會讓事情變得更好嗎?
或者是否有不同的機制向用戶顯示快速反饋,如輪詢不需要我與Apache或服務器混淆?
如何更新狀態每(10,100)請求,而不是每個人的更新?這能改善事情嗎? – glasnt
它可以但是然後我會顯示用戶? –
此代碼尚未生效,我只是在執行此操作之前檢查是否存在任何潛在的缺點 –