PHP: проверять базу данных mysql каждые 10 секунд для любых новых строк

Я делаю php-чат и запускаю часть базы данных проверки php. Поэтому, когда пользователь вводит что-то в чат, он записывается в базу данных MySQL, как бы я проверял базу данных каждые 10 секунд, чтобы чат одного пользователя обновлялся новыми сообщениями от других пользователей. Я знаю, что вы можете использовать запрос ajax на страницу с интервалом, но я хочу, чтобы php находился на одной странице, вместо того, чтобы использовать многочисленные страницы. Это код для проверки базы данных

<?php $con = mysqli_connect('host','user','pass','database'); $query = mysqli_query($con,"SELECT * FROM `messages`"); while ($row=mysqli_fetch_assoc($query)) { $user = $row['user']; $message = $row['message']; echo 'User: ',$user,' Message: ',$message; } ?> 

Спасибо заранее!

Это то, что вам нужно. Нам нужно установить время для автоматической перезагрузки ajax. Не помещайте все на одну страницу. Потому что вы должны перезагрузить страницу для обновления данных. Это плохое решение.

Вызов jQuery Ajax Request Каждый X минут

Используйте MySQL Event Scheduler.

Ниже ссылка проведет вас.

http://www.9lessons.info/2012/10/mysql-event-scheduler.html .

Я думаю, лучший вариант в вашем случае.

Сделайте какое-то время в течение 30 секунд и проверяйте db каждую секунду, как только вы обнаружите, что запись прерывается, и она прерывается, когда истекает 30 секунд.

 $sec = 1; while($sec <= 30) { if(has record) Send to the user; $sec++; sleep(one sec here); } 

Используйте сон в течение 10 секунд, чтобы проверить каждые 10 секунд …

AJAX, вероятно, является самым простым решением. Вы можете выполнить запрос AJAX на той же странице, на которой выполняется PHP-код, если вы действительно этого хотите.

 (function check() { $.get('mypage.php', function(data) { doSomethingWith(data); setTimeout(check, 5000); // every 5 seconds }); })(); 

PHP не имеет функции setInterval. Хотя я уверен, что вы можете использовать crontask для автоматизации на сервере, вы также можете добиться этого с помощью простого Javascript.

Концепция, которую вы пытаетесь достичь, известна как короткий опрос. То, что вы хотите сделать, это иметь функцию setInterval в Javascript, которая постоянно делает запросы AJAX в ваш PHP-файл, который выполняет проверку базы данных для новых сообщений. Ваш PHP должен вернуть эту информацию в ваш скрипт, где вы можете просто заполнить экран пользователя.

Существует также Long Polling, где вы просто поддерживаете соединение и имеете setTimeout чтобы ждать сообщений. Вы можете найти больше информации самостоятельно, и если у вас есть вопросы, вы можете вернуться сюда.

Хорошее видео об этом:

https://www.youtube.com/watch?v=wHmSqFor1HU

Надеюсь это поможет.