То, что вы хотите, это длинный опрос . По сути, вы делаете XHR, а сервер и PHP удерживают запрос открытым до тех пор, пока новые данные не будут готовы к отправке обратно.
Вам необходимо настроить Apache таким образом, чтобы в таких обстоятельствах он не превышал время ожидания, поэтому проведите серьезное исследование. По сути, PHP выглядит так ...
set_time_limit(0);
while (TRUE) {
$db->query('SELECT `message` FROM `messages` WHERE `new` = TRUE');
if ($db) {
echo json_encode($db->results());
exit;
}
sleep(1);
}
Затем вы создадите XHR для этой страницы, и она останется открытой до тех пор, пока не будут готовы новые данные. Затем при полном обратном вызове обновите состояние своей страницы и создайте новый XHR.
Это намного эффективнее, чем непрерывный опрос обновлений с использованием XHR.
Удостоверьтесь, что вы проводите много исследований, потому что я считаю, что Apache подумает, что что-то не так, если скрипт PHP не остановился примерно через 30 секунд. :)