Мы экспериментировали с использованием Comet для своего рода чата.Основная предпосылка заключается в том, что вы открываете соединение (вероятно, AJAX-запрос) с веб-сервером и держите его открытым до тех пор, пока не истечет
- Время ожидания (скажем, 30 секунд), * 1006 *
- или некотороевозникает состояние приложения, которое требует отправки данных клиенту.
В этот момент запрос возвращается.Если есть полезная нагрузка, примените все, что нужно сделать, а затем повторите запрос, который снова запустит процесс.
Единственный существенный недостаток, с которым мы столкнулись, - это то, что многие соединения оставались открытыми (просто сидели в ожиданииответ) мы быстро исчерпали количество потоков в Apache и будущие остановились.В этот момент мы отказались от упражнения (по другим причинам, однако), поэтому никогда не рассматривали возможные исправления.
Другая проблема заключалась в том, чтобы заставить отдельные потоки PHP общаться друг с другом, что также было нелегким делом.Насколько я помню, в итоге мы использовали что-то, построенное на сокетах, и каждый поток мог общаться с другим с уникальным идентификатором (я сам не работал над этим битом, поэтому я не уверен, что это полностью правильно).В вашем случае вы можете проверить время модификации на БД или файле, а затем вернуться, когда произойдет изменение.
Я мог бы предположить, что с тех пор, как мы это попробовали (все было несколько лет назад), все могло бы прогрессировать., но я подозреваю, что общая идея все еще остается, и библиотеки использовали это.