Как получать данные в реальном времени из базы данных, используя jQuery каждую 1 секунду - PullRequest
0 голосов
/ 08 января 2011

Как получить данные в реальном времени из базы данных mySQL, используя jQuery каждые Один второй

Мне нужно изменить document.write, чтобы я увидел результат на новой странице

<SCRIPT>
            setTimeout("document.write('<p><?php
        $qry = mysql_query('SELECT SUM(clicks) AS total FROM short_urls');
        $row = mysql_fetch_assoc($qry);
        echo number_format($row['total']); ?></p>')",1000);
</SCRIPT>

Ответы [ 2 ]

4 голосов
/ 08 января 2011

Простая стратегия заключается в использовании setTimeout:

setTimeout( function(){
  your_function_that_gets_data();
  your_function_that_displays_data();
}, 1000 );

. Для более сложных подходов вы можете рассмотреть длинный опрос .


Обновление: Анас, похоже, ты немного сошел с рельсов после того, как я предложил вышеупомянутый вариант.Используете ли вы setTimeout() или setInterval(), вы определенно хотите избежать путаницы, с которой вы обновили свой вопрос.

Создайте страницу php, которая просто возвращает общее количество.Напишите свой JavaScript, чтобы вызывать эту страницу асинхронно (то есть через ajax), с любым интервалом, который вам нравится.Когда результат возвращается, используйте функцию обратного вызова, чтобы перерисовать область страницы, чтобы итоговое значение обновлялось для пользователя.

Примерно так:

var updateTotal = function () {
  $.get('your_script_that_returns_a_total.php', function( data ){ // get new total
    $('#div_displaying_total').val( data ); // paint a div with the new result
  });
};

Теперь у вас есть простая функция, которая, при запуске, обновит div в вашем представлении с текущей суммой.Запустите эту функцию так часто, как вам нравится.Например, чтобы запускать его каждые пять секунд:

var running = setInterval( updateTotal, 5000 );

Вы, конечно, можете гораздо больше полюбить время, написав свою функцию updateTotal для вызова себя после задержки и т. Д. И вы можете остановить обновлениенапример:

clearInterval( running );

... который позволяет легко настроить переключатель включения / выключения.

Если что-то из этого приведет к большей ясности, я бы предложил обновить ваш вопрос, что привлекает отрицательные голоса за запутанный код в нем.

2 голосов
/ 08 января 2011

Вам нужно будет использовать PHP для вызова базы данных, чтобы прочитать все строки из нее.PHP будет вызываться набором событий AJAX с использованием функции JavaScript setTimeout() для каждых 1000 мс (1 секунда).Огромная проблема, с которой я могу столкнуться, заключается в том, что если у вас много пользователей, большая база данных и много одновременных входов, вы очень быстро перегрузите свой сервер.Я думаю, что отправка запроса каждые 30 секунд или что-то было бы лучше, может быть, 10, по крайней мере.

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