Интервал времени для извлечения данных из БД и остановка при получении данных - PullRequest
1 голос
/ 24 декабря 2011

Я новичок, так что будьте добры:)

Какое самое простое решение для проверки, извлечения и использования вновь полученных данных из базы данных 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 ]

1 голос
/ 30 декабря 2011

Мое решение, в конце концов, действительно в 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
            }
        }
    ?>
0 голосов
/ 24 декабря 2011

Не используйте такую ​​логику на стороне клиента. JavaScript можно легко манипулировать / изменять. Кто-то может заменить интервал на гораздо более короткий и нагрузить сервер. Прочитайте о Comet , используйте его для ожидания результатов с сервера. На стороне сервера выполняйте всю логику: реализуйте опрос базы данных (с заданным интервалом) и, при необходимости, отправляйте данные в браузер / прекращайте опрос / делайте что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...