реализовать Comet с помощью erlang и использовать его для PHP-приложения - PullRequest
3 голосов
/ 26 декабря 2009

Я создаю веб-приложение на PHP и дошел до того, что мне нужно создать сервер Comet, потому что мне нужно обновлять пользователей, когда появляются новые данные (почти как FB). Я потратил так много времени на поиск в Интернете и пришел к выводу, что лучший способ создать сервер Comet - это создать его с помощью erlang. Кроме того, я обнаружил, что apache-php не очень хорошая комбинация для этого, потому что процесс для каждого запроса выдает. Итак, мне нужно создать облегченный http-сервер для кометного приложения.

Я совершенно новичок в мире эрланга, но я думаю о внедрении Comet-сервера в эрланге и возможности использовать его как интерфейс для обновления только клиентов. Что касается остальных функций моего веб-приложения, я все еще хочу продолжить их реализацию с помощью PHP. Таким образом, направление запросов на обновление клиентов на сервер erlang и направление других запросов на сервер apache-php.

Это кажется очень сложным. Мне нужно знать, как лучше всего выучить эрланг для построения Comet-сервера и как объединить два языка (erlang и php) для совместной работы, когда у меня появляется новая информация. чтобы быть доведенным до клиентов, мне нужно сделать новые изменения доступными для Comet, а затем он передает информацию пользователям. Так, как я могу извлечь выгоду из php и erlang и заставить их работать вместе.

Извините за длинное объяснение, но мне действительно нужна ваша помощь, ребята, и любые рекомендации, которые вы можете дать мне, чтобы узнать и реализовать то, что я хочу. Заранее большое спасибо.

EDIT: Стоит ли изучать Python и Twisted для достижения того, чего я хочу?

Ответы [ 7 ]

3 голосов
/ 26 декабря 2009

Определенно возможно сделать это с Эрлангом. Один из вариантов - использовать длинный опрос, который вы можете сделать с mochiweb. http://code.google.com/p/mochiweb/

Другая идея заключается в использовании сокетов. Пока веб-сокеты не поддерживаются достаточным количеством браузеров, вам придется использовать флэш-мост для создания TCP-соединения и использовать JavaScript для связи с сервером. Взгляните на веб-сокет JS: http://github.com/gimite/web-socket-js

Как только вы это настроите, вы сможете общаться между вашими процессами Erlang и PHP следующим образом: http://www.math -hat.com / ~ zukerman / projects / php-erlang /

Опять же, если вы все еще новичок в Erlang, возможно, вы сэкономите время в долгосрочной перспективе с помощью Python и Twisted или Tornado.

2 голосов
/ 26 декабря 2009

Apache + php действительно плохая технология для приложений в стиле комет. Вы можете использовать множество других технологий, которые ближе к php: Ruby , Python и Perl должны быть пригодны для использования. Если вы действительно хотите, вы, возможно, могли бы написать какой-нибудь сокет-сервер на php, но я бы, наверное, не ставил на то, чтобы заставить его работать. Это не значит, что Erlang не является хорошим выбором, но есть и другие альтернативы.

Если вы не хотите использовать основной язык, не забудьте также проверить node.js , который выполняет очень впечатляющие тесты. Кроме того, вы, возможно, уже знаете немного javascript.

2 голосов
/ 26 декабря 2009

Вы можете выучить Erlang довольно быстро, вы должны быть в состоянии использовать такие вещи, как gen_server, gen_event и тому подобное из OTP. Самый быстрый способ выучить Erlang - это изучить документацию и примеры по адресу: http://www.erlang.org/doc/index.html.

Для связи между PHP и Erlang вы можете использовать сокеты, fsockopen () и остальные на стороне PHP и gen_tcp на стороне Erlang. Вы можете разобрать условия Erlang, отправленные через канал, со стороны PHP (подробнее здесь ).

Я никогда не использовал Erlang и PHP, но с некоторым успехом использовал Erlang и Python, зная, что с PHP это должно быть довольно просто, просто старайтесь держать все в чистоте и поддерживать состояние на стороне Erlang, используя PHP только для генерации пользовательского интерфейса.

1 голос
/ 04 июня 2012

Вы должны посмотреть на Зевки . Это веб-сервер Erlang, который существует уже более десяти лет, он чрезвычайно стабилен и все еще находится в процессе активной разработки и обслуживания и поддерживает длинные опросы, приложения PHP, WebSockets и многое другое & mdash; почти все, что вы могли хотеть.

Источники Yaws находятся на github , а его список рассылки здесь .

1 голос
/ 31 декабря 2009

Дополнительным вариантом является использование Nginx и его push-модуля (http://pushmodule.slact.net/)

Это позволит вам использовать Comet из PHP без необходимости изучать новый язык.

1 голос
/ 26 декабря 2009

Если вы рассматриваете Python и Twisted, вы можете взглянуть на Orbited. У них очень зрелая реализация Comet. Вы можете настроить Orbited для связи с вашим PHP-приложением по протоколу STOMP.

В этой статье есть хороший учебник, который поможет вам начать работу с Orbited. http://thingsilearned.com/2009/06/09/starting-out-with-comet-orbited-part-1/

Чтобы интегрировать ваше приложение с PHP, вам потребуется Google для клиентов STOMP PHP

0 голосов
/ 04 июня 2012

Попробуйте Chicago Boss framework здесь ... используя это, вам не нужно знать гайки и болты того, что называется OTP (что на самом деле очень просто, мощно и доказано сражением), потому что дизайнерЧикагского Босса, сумел красиво его инкапсулировать ... согласно учебнику.

Я изучаю это прямо сейчас, после изучения OTP.

...