решение для КОМЕТЫ и PHP

Существует ли действительное решение для КОМЕТЫ И комбинации PHP? В основном я приехал в точку, что я должен периодически обновлять пользовательскую домашнюю страницу каждый раз, когда существуют новые данные в базе данных. Насколько я понимаю, я должен открыть постоянное соединение между своим сервером и своими клиентскими браузерами для обновления содержания их домашней страницы, как только новая информация, доступная, не выделяя много ресурсов, но у меня не было удачи при нахождении, что что-либо очищается об этой проблеме. Я читал, много статей предполагает, что PHP не является хорошим языком для реализации КОМЕТЫ. Мое веб-приложение полностью программируется в PHP, и я не хочу учить другой язык, но если бы я вынужден к, Вы предложили бы, чтобы хороший язык запустился с? Вы думаете, что я могу программировать интерфейс только для обработки этой проблемы?

Заранее спасибо.

5
задан codemaker 25 December 2009 в 13:59
поделиться

8 ответов

Я слышал, как люди говорят, что PHP не очень подходит для COMET (как вы сами сказали) было из-за того, как веб-серверы и PHP работают - в основном потому, что на каждой странице есть один процесс, а это значит, что если вы хотите, чтобы к вашему серверу было подключено 200 пользователей, вам понадобится 200 процессов (что может быстро стать проблемой для еще нескольких сотен пользователей) .

Возможно, решением этой проблемы было бы использование nginx_http_push_module ?

Я не пробовал (еще?) , но это может быть именно то, что нам нужно ...

2
ответ дан 15 December 2019 в 06:27
поделиться

Вам не нужно изучать новый язык, чтобы реализовать такую ​​функцию.

Например, вы можете использовать Quercus (Java-реализация PHP) и реализовать серверное приложение Comet, использующее модель управления памятью JVM.

0
ответ дан 15 December 2019 в 06:27
поделиться

Вам нужны решения:

  1. почти решение 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

  2. точное решение COMET на php (думаю, это именно то, что вам нужно): http://translate.google.com/translate?hl=ru&sl=ru&tl=en&u=http://dklab.ru/lib/dklab_realplexor/

0
ответ дан 15 December 2019 в 06:27
поделиться

Вам следует попробуйте Realplexor Дмитрия Котерова, который представляет собой кометный сервер, который предоставляет Javascript и PHP API.

Readme.txt на английском языке предоставляется в пакете .

0
ответ дан 15 December 2019 в 06:27
поделиться

Сначала вам нужно понять, что представляет собой приложение 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

Lightstreamer Dojo

Dojo Charting + Lightstreamer Comet Demo

Demo

Ajax Push Engine или The APE Project

Что вам нужно проверить для этого -...

a) Позволит ли ваш хостинг-провайдер установить их на хостинг-серверы

b) Использование вашей оперативной памяти и полосы пропускания (Вам понадобится выделенный сервер с пакетом, который даст вам много оперативной памяти и полосы пропускания)

Это зависит от того, каковы ваши требования. Вам придется проанализировать и подойти к этому вопросу.

Если вы реализуете небольшое приложение, вы можете выбрать Ajax Long polling, учитывая тот факт, что вы проанализировали и рассмотрели отрицательные стороны этого подхода.

Если у вас большое приложение, вы можете пойти на паровой опрос.

0
ответ дан 15 December 2019 в 06:27
поделиться

Я работал над школьным проектом и столкнулся с точно такой же проблемой. Поскольку каждый процесс PHP занимает так много памяти, невозможно поддерживать большое количество соединений на ящик. Именно в этот момент я решил перейти на использование BOSH и XMPP. Это довольно новая "волна" технологии, но уже существует довольно много библиотек, которые помогут вам на вашем пути. Я бы предложил использовать Strophe и XMPPHP. Тогда ваши клиенты смогут подключаться к серверу BOSH (я использую Openfire), и это может масштабироваться до тысяч активных соединений на сервер.

1
ответ дан 15 December 2019 в 06:27
поделиться

Ajax с длинным опросом является простым решением, есть плагины в jquery и любом другом крупном js фреймворке, чтобы помочь вам сделать это.

0
ответ дан 15 December 2019 в 06:27
поделиться

Node.js кажется довольно приятным решением для подобных вещей. (Все еще немного забавно для продакшена, но все равно круто). PHP - ужасная среда для подобных вещей, вам нужно изменить способ взаимодействия сервера с запросами, потому что вы больше не отвечаете немедленно. У Python есть несколько серверов, таких как Twisted, которые отлично подходят для этого, потому что они позволяют вам быть сервером . Независимо от того, на каком языке вы это пишете, вам необходимо изменить типичную модель запроса / ответа. (Сервер Glassfish Grizzly Comet делает это для Java в качестве примера)

0
ответ дан 15 December 2019 в 06:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: