及时从db检索数据的时间间隔,并在数据到达时停止

时间:2011-12-23 22:54:06

标签: php javascript jquery mysql logic

我是新手,所以请善待:)

从mysql数据库检查,检索和使用新接收的数据的最简单的解决方案是什么?

正在从外部API更新数据库。理想情况下,我会在它到达时得到它,但使用间隔也可以工作。 如果同时没有新数据,则在第一次迭代然后每5分钟执行一次 - 使用数组的下一个条目执行操作,这可能导致数据在接下来的5分钟内更新。但我想确保在收到新数据后停止所有内容,并在php中执行一些操作。

什么是最简单的解决方案? php vs jquery / ajax?

我建议的解决方案是jquery:

        <script>
            var newdata = false;
            if(newdata === false){
                setTimeout (function(){
                    $.each(array, function(){
                            $.post('checkdb.php',data,function(resp){
                                          if(resp){
                                          newdata=resp;
                                          return newdata;                                                  
                                          }
                                          else{
                                          $.post('doaction.php',data);
                                          // cause a potential update within the next 5 min
                                          }
                            });
                    });
                }, 300000); 
            }
            else{
                // move newdata back to php and (then) do something with response
            }
        </script>

谢谢! :)

2 个答案:

答案 0 :(得分:1)

我的解决方案到底确实是在php而不是ajax(在这种情况下真的不需要客户端。)

以下是大纲:

    <?php
        while (something is true){
            //do stuff

            flush(); // execute the stuff you did until now
            sleep(300); // wait 5 min
            // now check database and retrieve new data, if any, and insert into $result 

            if (isset($result)){
                //do stuff with the $result
                break; // get out of the loop
            }
        }
    ?>

答案 1 :(得分:0)

请勿在客户端使用此类逻辑。 JavaScript可以很容易地操作/更改。有人可以用更短的间隔替换间隔并强调服务器。阅读Comet,将其用于等待服务器的结果。在服务器端执行所有逻辑:实现数据库轮询(根据需要使用间隔),并在需要时将数据推送到浏览器/停止轮询/执行任何操作。