2013-06-05 77 views
0

我正在開發基於php控制檯應用程序的sql數據庫同步器。 它基本上是從一個數據庫到另一個數據庫的更新。 控制檯應用程序很好,但我想製作一個網頁,其中包含10分鐘作業的實時響應。 像:PHP和AJAX實時數據庫同步

Updating product#1 .... READY! 

Updating product#2 .... 

我的問題是我怎麼能做到這一點與AJAX?是否有一些事件在PHP迭代中觸發響應而不是在它之後? 或者我必須做一個迭代的AJAX請求?

謝謝!

+0

如果你只需要每10分鐘更新一次,而你有一個網頁打開然後是的,你可以使用由JavaScript觸發的AJAX。你最好查看cronjobs,因爲這會自動觸發你的同步腳本。 –

回答

1

在PHP端沒有事件被調用,你可以在客戶端使用什麼來觸發JS函數。至少,這是不容易的。當然你可以使用一些像Comet得到真正的互動結果。但想想很多,請按照以下步驟操作: 您的PHP腳本將僅基於來自$ _GET參數的product_id,爲每個調用執行一個產品。 而這個腳本,在繼續請求產品後會返回下一個產品的ID繼續。 因此,您只需通過AJAX第一次調用您的proceed.php腳本,onComplete事件,此AJAX調用就會顯示消息「正在更新產品#1 .... READY!」,從而獲取下一個產品的ID。而且它是直到全部完成:)

+0

嗯,這是我的計劃B.我希望有一個簡單的解決方案,但它沒問題。 :) – Gkali

+0

與彗星相比,這是非常容易的變種。我在一個項目中意識到類似的事情,並且它在長時間輸出時就像一個魅力;)當上一次操作完成時,還連接了小聲音。 –

+0

你是對的!作品像魅力:) 還實施了一些暫停和停止功能。再次感謝! – Gkali

0

沒有任何情況是這樣,但你可以得到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 
         } 
        });