Apache с поддержкой Comet - PullRequest
       34

Apache с поддержкой Comet

1 голос
/ 07 октября 2011

Я хотел бы создать многопользовательское приложение для веб-игр, в котором оно поддерживает чат. Я предполагаю, что приложению придется обрабатывать сотни одновременных соединений.

Я планирую разместить свое приложение на общем веб-хостинге, который имеет следующие ограничения (вероятнее всего, аналогичные PHP + Comet (long-polling) scaling / hosts ):

  • Не похоже, что я могу изменить веб-сервер. Скорее всего, он использует Apache.
  • Поддерживает MySQL 5, PHP 5.3.x, Perl, Python, Ruby on Rails, CGI

(Точнее, я буду использовать общий веб-хостинг HawkHost.)

А вот мой результат исследования, за которым следуют мои вопросы:

  1. Некоторые ресурсы (например, Python Comet Server ) говорят, что PHP не подходит для обработки одновременных подключений, тогда как Python - лучший выбор. Это правда?
  2. Я пытался использовать технику длинных опросов в PHP (хотя я не знаю, правильно ли она реализована или нет, например, Проблема с кометой при оставленных открытых соединениях ), используя "Зацикливаться бесконечно, пока не изменятся данные. " метод. Это почти работает . Оставшаяся проблема заключается в том, что серверный процесс никогда не умирает, когда браузер закрыт (сервер не знает, что соединение было разорвано, и данные никогда не изменяются). Есть ли способ, которым PHP может определить, был ли браузер завершен, чтобы остановить цикл?

Я искал повсюду, чтобы найти ответы, но все же я не могу ничего сделать. Эту тему также много раз задавали в StackOverflow, извините, если я могу повторить>. <. </p>

В настоящее время я могу кодировать, используя PHP, MySQL и JQuery для JS. Я все еще плохо знаком с термином Комета и Сервер Push. При необходимости я также хочу выучить новый язык сценариев, такой как Python.

Я ценю любые идеи о том, какой язык сценариев, инфраструктуру и методы использовать для запуска моего проекта.

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Если у вас есть среда общего хостинга, и на нее наложен ряд ограничений, тогда стоит отдать на аутсорсинг функциональность в реальном времени.Я бы сказал это, так как я работаю в одной из таких компаний, Pusher.Но я надеюсь, что другие поддержат меня в этом.

При использовании размещенного решения вы можете отправить уведомление, отправив HTTP-запрос в RESTful API.Затем служба доставит сообщение подключенному веб-клиенту (браузеру).Браузер должен включать тег сценария или использовать библиотеку, которая также подключается к размещенной службе.

Основные преимущества:

  • Нет установки или обслуживания
  • Нет необходимости обрабатывать постоянные соединения - нет использования ресурсов
  • Действительно простое использование: тег сценария в приложении и вызов API REST
  • Размещенное решение обрабатывает масштабирование

ТакжеВот список размещенных в реальном времени решений .

0 голосов
/ 07 октября 2011

Так что вы можете использовать Python. Тогда вы можете использовать Торнадо . (psst ... Facebook использует это)

И у меня была такая же проблема с открытыми соединениями. Только не тратьте время на поисковое решение в PHP - позже вы пожалеете. Я был. Просто используйте то, что сделано для кометы. Если вы предпочитаете JAVA, то есть: CometD .

А для игры получи нормальный хостинг. Они дешевы в эти дни.

...