У меня есть Ruby-скрипт, который постоянно обновляет базу данных MySQL. Я хочу показать « mysql_num_rows()
» в реальном времени. Так как запись вводится в базу данных с помощью скрипта Ruby, я хочу, чтобы PHP-скрипт обновлял свой счетчик mysql_num_row () в реальном времени.
Я попытался использовать <meta http-equiv="refresh" content="5">
, но я не думаю, что это лучшее решение.
Есть ли у кого-то лучшее решение?
Используйте JavaScript на странице, чтобы периодически звонить на сервер и получать некоторые данные. Используя библиотеку jQuery для кросс-браузерной поддержки AJAX, вы просто выполните следующее:
jQuery(function($){ setInterval(function(){ $.get( '/getrows.php', function(newRowCount){ $('#rowcounter').html( newRowCount ); }); },5000); // 5000ms == 5 seconds });
Это сделает запрос на ваш сервер каждые 5 секунд и приложит результат к тому, что вы отправите обратно в элемент с идентификатором rowcounter
, например
<p>There are <span id='rowcounter'>xx</span> rows in the DB.</p>
Я бы использовал программу обновления ajax, чтобы отслеживать страницу, на которой выводится ваш mysql_num_row (). Прототип будет хорошим решением: http://www.prototypejs.org/api/ajax/updater
С только PHP и javascript единственный способ – постоянно проверять наличие обновлений, хотя wajiw правильно, что маршрут ajax будет менее навязчивым / шумным, чем полное обновление страницы.
Для получения обновлений по мере их поступления потребуется приложение (или апплет) с постоянным соединением в порту / сокете.
Если у вас будет большое количество посетителей, лучше сохранить номер строки в статическом файле с помощью отдельного скрипта, выполняемого cron (или запустить ваш скрипт в бесконечном цикле на сервере). Затем покажите номер из этого статического файла с помощью JS, как предположил Фрогз. В противном случае вы можете превзойти границы соединений mysql очень быстро.
Опрос никогда не может быть в реальном времени!
Однако Джаггернаут выглядит так, как будто он отвечает вашим требованиям: http://juggernaut.rubyforge.org здесь
Но вам нужна вспышка на стороне клиента.