我正在開發基於php控制檯應用程序的sql數據庫同步器。 它基本上是從一個數據庫到另一個數據庫的更新。 控制檯應用程序很好,但我想製作一個網頁,其中包含10分鐘作業的實時響應。 像:PHP和AJAX實時數據庫同步
Updating product#1 .... READY!
Updating product#2 ....
我的問題是我怎麼能做到這一點與AJAX?是否有一些事件在PHP迭代中觸發響應而不是在它之後? 或者我必須做一個迭代的AJAX請求?
謝謝!
我正在開發基於php控制檯應用程序的sql數據庫同步器。 它基本上是從一個數據庫到另一個數據庫的更新。 控制檯應用程序很好,但我想製作一個網頁,其中包含10分鐘作業的實時響應。 像:PHP和AJAX實時數據庫同步
Updating product#1 .... READY!
Updating product#2 ....
我的問題是我怎麼能做到這一點與AJAX?是否有一些事件在PHP迭代中觸發響應而不是在它之後? 或者我必須做一個迭代的AJAX請求?
謝謝!
在PHP端沒有事件被調用,你可以在客戶端使用什麼來觸發JS函數。至少,這是不容易的。當然你可以使用一些像Comet得到真正的互動結果。但想想很多,請按照以下步驟操作: 您的PHP腳本將僅基於來自$ _GET參數的product_id,爲每個調用執行一個產品。 而這個腳本,在繼續請求產品後會返回下一個產品的ID繼續。 因此,您只需通過AJAX第一次調用您的proceed.php腳本,onComplete事件,此AJAX調用就會顯示消息「正在更新產品#1 .... READY!」,從而獲取下一個產品的ID。而且它是直到全部完成:)
沒有任何情況是這樣,但你可以得到Ajax調用期間進度百分比如下
$.ajax({
xhr: function()
{
var xhr = new window.XMLHttpRequest();
//Upload progress
xhr.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = (evt.loaded/evt.total)*100;
//Do something with upload progress
var per= Math.round(percentComplete);
//per gives you percentage of progress
}
}, false);
//Download progress
xhr.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = (evt.loaded/evt.total)*100;
//Do something with download progress
var per= Math.round(percentComplete);
//per gives you percentage complete of process
}
}, false);
return xhr;
},
url:'your url here',
data:{'data':data},
type:"POST",
success:function(n){
//ajax completion handler
}
});
如果你只需要每10分鐘更新一次,而你有一個網頁打開然後是的,你可以使用由JavaScript觸發的AJAX。你最好查看cronjobs,因爲這會自動觸發你的同步腳本。 –