LINUX.ORG.RU

PHP и WebSocket

 , , ,


0

1

Понадобилось в небольшой веб проект на PHP добавить сокеты. Думал на PHP и написать, но не нашел ни одной библиотеки с асинхронной реализацией, кроме Ratchet, но мне необходимо посылать сообщения с сервера, она для этого предлагает использовать родительскую библиотеку и писать реализацию самому. Ничего другого готового для продакшна не нашел.

Решил сделать на Python с Tornado и судя из примера оно использует для этого веб сервер! В чем тогда проблема реализации этого на PHP? С многопоточностью проблема решается через Apache получается. Поддержка сокетов есть. Я так понимаю проблема где-то в mod_php?


А занафига тебе со стороны сервера асинхронность? Чтобы попинать удаленный сервер, она не нужна.

shimon ★★★★★
()
Ответ на: комментарий от shimon

Извиняюсь, имел ввиду параллельность. В принципе ничего блокирующего у меня нет. Вообще пытаюсь сделать следующее:

Есть сервер, с ним по сокету общаюсь на своем сервере (ежесекундно получаю информацию, складываю, отдаю всем своим клиентам), после 30 сообщений от сервера пишу ее в БД и все заново. В принципе тут асинхронность не нужна получается.

dearboy
() автор топика
Ответ на: комментарий от dearboy

Тогда причем тут WebSockets? У тебя эта собиралка сообщений вообще не вебсервером дергается, как я понял.

И зачем параллельность? По-моему, усложнение на ровном месте.

Но я бы использовал Python+Twisted.

shimon ★★★★★
()

http://daemon.io/ - это для тех кто к пыху намертво прикипел.

Если надо на клиентов сообщения активно пушить, советую посмотреть node.js + faye/socket.io . Нода под такую хрень хорошо заточена. Про торнадо ничего сказать не могу.

Vit ★★★★★
()
Ответ на: комментарий от Vit

У клиента shared, там только PHP, Perl, да Python. phpDaemon видел, но собрать не получится.

dearboy
() автор топика
Ответ на: комментарий от shimon

Сообщения собираются по обычному сокету и реализовать это можно и на PHP, вопрос как в браузер отдавать ежесекундно.

dearboy
() автор топика
Ответ на: комментарий от shimon

В идеале, это игра. Каждую секунду сервер дает рандомное значение, мне его надо передать клиенту. Естественно задержка есть, но главное в секунду выдавать по значению.

dearboy
() автор топика
Ответ на: комментарий от dearboy

Так это.

Общение твоего сервера с твоим клиентом — это одно общение.
Общение твоего сервера с другим сервером — совсем другое общение.

Ошибка в том, что программисты почему-то думают, что коль скоро третьесторонний сервер генерирует сообщения для клиента, эти два общения обязательно надо совместить. В один процесс, в один поток.

В то же время вполне естественно, что сбор данных может делать один процесс, а выдавать клиенту — другой. Учитывая их природу, когда один должен крутиться чуть ли не постоянно, а другой только тогда, когда его дергают.

shimon ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.