Существует ли действительное решение для КОМЕТЫ И комбинации PHP? В основном я приехал в точку, что я должен периодически обновлять пользовательскую домашнюю страницу каждый раз, когда существуют новые данные в базе данных. Насколько я понимаю, я должен открыть постоянное соединение между своим сервером и своими клиентскими браузерами для обновления содержания их домашней страницы, как только новая информация, доступная, не выделяя много ресурсов, но у меня не было удачи при нахождении, что что-либо очищается об этой проблеме. Я читал, много статей предполагает, что PHP не является хорошим языком для реализации КОМЕТЫ. Мое веб-приложение полностью программируется в PHP, и я не хочу учить другой язык, но если бы я вынужден к, Вы предложили бы, чтобы хороший язык запустился с? Вы думаете, что я могу программировать интерфейс только для обработки этой проблемы?
Заранее спасибо.
Я слышал, как люди говорят, что PHP не очень подходит для COMET (как вы сами сказали) было из-за того, как веб-серверы и PHP работают - в основном потому, что на каждой странице есть один процесс, а это значит, что если вы хотите, чтобы к вашему серверу было подключено 200 пользователей, вам понадобится 200 процессов (что может быстро стать проблемой для еще нескольких сотен пользователей) .
Возможно, решением этой проблемы было бы использование nginx_http_push_module
?
Я не пробовал (еще?) , но это может быть именно то, что нам нужно ...
Вам не нужно изучать новый язык, чтобы реализовать такую функцию.
Например, вы можете использовать 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/lib/dklab_multiplexor/&sl=ru&tl=ru
точное решение COMET на php (думаю, это именно то, что вам нужно): http://translate.google.com/translate?hl=ru&sl=ru&tl=en&u=http://dklab.ru/lib/dklab_realplexor/
Вам следует попробуйте Realplexor Дмитрия Котерова, который представляет собой кометный сервер, который предоставляет Javascript и PHP API.
Сначала вам нужно понять, что представляет собой приложение comet. Концепция, связанная с созданием приложения comet, объясняется в вики по адресу Comet (программирование)
Что вам нужно понять, так это то, что вы можете использовать любой язык программирования для создания приложения comet, если он следует концепциям, объясненным в вики
1. Ajax с длинным опросом
2.Потоковая передача
Вы можете посмотреть примеры кода на Simple "Long Polling" example code
Теперь перейдем к проблемам -
1.Вы используете ajax с длинным опросом, тогда браузер (ajax запрос) будет продолжать опрашивать сервер для получения данных. Это может съесть память на сервере или замедлить работу браузера через некоторое время.
Несколько предложений
JQuery PeriodicalUpdater (AJAX длительный опрос/опрос сервера)
RobertFischer / JQuery-PeriodicalUpdater
Что вам нужно проверить для реализации этого -
a) Как часто вы ожидаете обновления данных на сервере.
b) Сколько времени будет работать скрипт на стороне сервера для проверки, получения и обработки данных перед отправкой их на сторону клиента.
2. Вы можете реализовать потоковую передачу данных, используя следующее -
Как реализовать COMET с помощью PHP
Dojo Charting + Lightstreamer Comet Demo
Ajax Push Engine или The APE Project
Что вам нужно проверить для этого -...
a) Позволит ли ваш хостинг-провайдер установить их на хостинг-серверы
b) Использование вашей оперативной памяти и полосы пропускания (Вам понадобится выделенный сервер с пакетом, который даст вам много оперативной памяти и полосы пропускания)
Это зависит от того, каковы ваши требования. Вам придется проанализировать и подойти к этому вопросу.
Если вы реализуете небольшое приложение, вы можете выбрать Ajax Long polling, учитывая тот факт, что вы проанализировали и рассмотрели отрицательные стороны этого подхода.
Если у вас большое приложение, вы можете пойти на паровой опрос.
Я работал над школьным проектом и столкнулся с точно такой же проблемой. Поскольку каждый процесс PHP занимает так много памяти, невозможно поддерживать большое количество соединений на ящик. Именно в этот момент я решил перейти на использование BOSH и XMPP. Это довольно новая "волна" технологии, но уже существует довольно много библиотек, которые помогут вам на вашем пути. Я бы предложил использовать Strophe и XMPPHP. Тогда ваши клиенты смогут подключаться к серверу BOSH (я использую Openfire), и это может масштабироваться до тысяч активных соединений на сервер.
Ajax с длинным опросом является простым решением, есть плагины в jquery и любом другом крупном js фреймворке, чтобы помочь вам сделать это.
Node.js кажется довольно приятным решением для подобных вещей. (Все еще немного забавно для продакшена, но все равно круто). PHP - ужасная среда для подобных вещей, вам нужно изменить способ взаимодействия сервера с запросами, потому что вы больше не отвечаете немедленно. У Python есть несколько серверов, таких как Twisted, которые отлично подходят для этого, потому что они позволяют вам быть сервером . Независимо от того, на каком языке вы это пишете, вам необходимо изменить типичную модель запроса / ответа. (Сервер Glassfish Grizzly Comet делает это для Java в качестве примера)