Есть ли реальное решение для комбинации COMET и PHP? В принципе, я пришел к выводу, что мне нужно периодически обновлять домашнюю страницу пользователя всякий раз, когда в базе данных появляются новые данные. Насколько я понимаю, мне нужно открыть постоянную связь между моим сервером и браузерами моих клиентов, чтобы обновить содержимое своей домашней страницы сразу после новой информации. доступный без выделения большого количества ресурсов, но мне не удавалось найти что-то ясно из этой проблемы. Я читал много статей, что PHP не является хорошим языком для реализации COMET. Мое веб-приложение полностью запрограммировано в PHP, и я не хочу изучать другой язык, но если меня заставят, предложите ли вы хороший язык для начала? Считаете ли вы, что я могу программировать интерфейс, чтобы справиться с этой проблемой?
Заранее спасибо.
Время, которое я слышал, говорит, что PHP не очень хорошо подходит для COMET (как вы сказали сами) из-за того, как работают веб-серверы и PHP, – в основном, потому что есть один процесс на странице, а это означает, что если вы хотите, чтобы 200 пользователей подключенного к вашему серверу, вам понадобится 200 процессов (которые могут быстро стать проблемой для еще нескольких сотен пользователей) .
Может быть, решением этой проблемы будет использование nginx_http_push_module
?
Я еще не пробовал (пока?) , Но это может быть только то, что нам нужно …
Я работал над школьным проектом и столкнулся с той же проблемой. Поскольку каждый процесс PHP имеет столько накладных расходов на память, что невозможно поддерживать многие подключения в каждом поле. Именно в этот момент я решил переключиться на использование BOSH и XMPP . Это довольно новая «волна» технологий, но уже существует немало библиотек, которые помогут вам на вашем пути. Я бы предложил использовать Strophe и XMPPHP . Тогда ваши клиенты могут подключиться к серверу BOSH (я использую Openfire ) и могут масштабироваться до тысяч активных подключений на сервер.
Вам не нужно изучать новый язык для реализации такой функции.
Например, вы можете использовать Quercus (Java-реализация PHP) и реализовать приложение Comet сервера с использованием модели управления памятью JVM.
Есть необходимые решения:
почти COMET-решение (использует php и один файл, написанный с помощью perl): http://translate.google.com/translate?js=y&prev=_t&hl=ru&ie=UTF-8&layout=1&eotf=1&u=http://dklab.ru/ Библиотека / dklab_multiplexor / & сл = RU & TL = еп
точное решение COMET в php (это то, что вы хотите, я думаю): http://translate.google.com/translate?hl=ru&sl=ru&tl=ru&u=http://dklab.ru/lib/dklab_realplexor/
Сначала вам нужно понять, что такое кометное приложение. Концепция, участвующая в создании приложения кометы, объясняется в wiki в Comet (программирование)
Что вам нужно понять, так это то, что вы можете использовать любой язык программирования для создания кометного приложения, если оно следует концепциям, объясняемым в wiki
1.Аякс с длинным опросом
2.Streaming
Вы можете проверить код примера на примере простого «длинного опроса»
Теперь, придя к проблемам –
1. Вы используете длинный опрос ajax, тогда браузер (ajax-запрос) будет продолжать опрос сервера для данных. Это может съесть память на сервере или замедлить работу браузера через некоторое время.
Несколько предложений
JQuery PeriodicalUpdater (длительный опрос / серверный опрос AJAX)
Обработка длинного опроса
RobertFischer / JQuery-PeriodicalUpdater
Что вам нужно проверить, чтобы реализовать это –
a) Как часто вы ожидаете обновления данных на сервере.
б) Сколько времени серверный скрипт будет запускать для проверки, извлечения и обработки данных перед отправкой на клиентскую сторону.
2.Вы можете реализовать потоки, используя следующее:
Как реализовать COMET с PHP
Дольо
Демо-версия Dojo Charting + Lightstreamer Comet
демонстрация
Ajax Push Engine или проект APE
Что вам нужно проверить для этого –
a) Ваш хостинг-провайдер позволит вам установить их на серверы хостинга
b) Использование ОЗУ и полосы пропускания (вам понадобится выделенный сервер с пакетом, который даст вам много ОЗУ и пропускной способности)
Это зависит от того, что и как ваши требования. Вам придется анализировать и подходить.
Если то, что вы реализуете, представляет собой небольшое приложение, вы можете пойти на опрос Ajax Long, учитывая тот факт, что вы проанализировали и обработали негативы этого подхода.
Если у вас есть большое приложение, вы можете пойти на пару.
Ajax с длинным опросом – это простое решение, в jQuery и любых других основных js-системах есть плагины, которые помогут вам в этом.
Node.js кажется довольно приятным решением для подобных вещей. (Тем не менее немного игрового для производства, но все равно прохладно). PHP – это ужасная среда для подобных вещей, вы должны изменить способ взаимодействия сервера с запросами, потому что вы больше не отвечаете немедленно. Python имеет несколько серверов, таких как Twisted, которые отлично подходят для этого, потому что они позволяют вам быть сервером . Независимо от того, на каком языке вы его пишете, вам нужно изменить типичную модель запроса / ответа. (Сервер Grizzly Comet от Glassfish делает это для Java в качестве примера)
Вы должны попробовать Realplexor Дмитрия Котерова , который является кометным сервером, который предоставляет Javascript и PHP API.
Readme.txt на английском языке предоставляется в пакете .