PHP和AJAX实时数据库同步

时间:2013-06-05 10:34:00

标签: php ajax response live

我正在开发基于sql数据库同步器的php控制台应用程序。 它基本上是从一个数据库到另一个数据库的更新。 控制台应用程序很好,但我想创建一个网页,其中包含10分钟作业的实时响应。 像:

Updating product#1 .... READY!

Updating product#2 .... 

我的问题是如何使用AJAX执行此操作?是否有一些事件在php迭代内部发出响应而不是在它之后? 或者我必须重复一次AJAX请求?

谢谢!

2 个答案:

答案 0 :(得分:1)

在PHP端没有调用事件,您可以在客户端使用它来触发JS函数。至少,它不可能轻松完成。当然你可以像Comet那样使用一些来获得真正的互动结果。但想想更容易做到如下: 您的php脚本将根据$ _GET param中的product_id,每次调用仅执行一个产品。 并且此脚本在继续请求的产品之后将返回下一个产品的ID以继续。 因此,您只需通过AJAX第一次调用您的proceed.php脚本,onComplete事件,此AJAX调用会显示您的消息“正在更新产品#1 ....就绪!”,获取下一个产品的ID以继续。直到一切都完成了:)

答案 1 :(得分: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
                        }
                    });