Comments 34
А под нагрузкой тестировали?
Сколько примерно одновременных клиентов может обслужить такой сервис?
По наличию свободных портов макс. около 60к или все же меньше?
Сколько примерно одновременных клиентов может обслужить такой сервис?
По наличию свободных портов макс. около 60к или все же меньше?
0
и еще немаловажно, исследовать зависимость между количеством подключенных клиентов и задержку в отправке сообщений между клиент-сервером.
0
К сожалению, пока нет возможности протестировать под серьезной нагрузкой. Но в сети вроде встречал упоминания, что phpDaemon дает весьма неплохие результаты.
0
теоретически — количество свободных портов * количество подключений к 1 порту (64К) если не ошибаюсь.
0
Кол-во свободных портов сервера не имеет значения, потому что все клиенты подключаются к одному порту (в данном случае 8047). Кол-во подключений к порту не ограничивается 64 тысячами.
+1
Кто-нибудь в курсе, какими преимуществами обладает phpDaemon по сравнению с node.js?
0
Кстати, я тоже сейчас думаю что выбрать для работы WebSocket-ами. Или изучить новый для себя Node.js, или попытаться использовать хорошо знакомый PHP с phpDaemon.
В phpDaemon немного пугает то, что PHP изначально не был приспособлен для работы как демон, да и поддержка у него не лучшая. В Node.js с информацией и поддержкой все отлично, но это для меня новая среда, с существенно иными подходами и стилем программирования.
Думаю, если бы мне требовалось делать долгосрочный и большой проект, я бы склонился все же к Node.js. А если проект небольшой и не сложный, то я, как PHP-шник, я попробую phpDaemon.
В phpDaemon немного пугает то, что PHP изначально не был приспособлен для работы как демон, да и поддержка у него не лучшая. В Node.js с информацией и поддержкой все отлично, но это для меня новая среда, с существенно иными подходами и стилем программирования.
Думаю, если бы мне требовалось делать долгосрочный и большой проект, я бы склонился все же к Node.js. А если проект небольшой и не сложный, то я, как PHP-шник, я попробую phpDaemon.
0
Я 2 дня мучался с phpDaemon, перерыл всю информацию какую смог найти, понял что большинство на форумах давно устарело. С трудом сделал рабочий пример, который терял коннекшены когда ему заблагорассудится.Потом плюнул и за 3 часа прочел теорию о Node.js и написал ту же логику без проблем.
Может я и ошибасюь, но если вебсокеты — то Node.js
Может я и ошибасюь, но если вебсокеты — то Node.js
+4
Я предполагаю, что если хорошо владеешь PHP, но пугает серьезное программирование на Node.js то можно сделать на Node.js лишь маленький скрипт, который ретранслирует вызовы в PHP и обратно. А всю сложную логику сделать уже на PHP.
-1
Думал о таком, но как-то во всех сценариях пришедших в голову без демона (самописного или на базе phpdaemon) на PHP не обойтись. Разве что писать либу для node.js, работающую с пулом php-fpm. Ну или тупо вызывать в аналогах system или exec CLI скрипт на PHP.
0
Можно общаться и через message queue, например, rabiitmq или zmq. Такой подход, в частности, я видел в недавнем примере zerogw
0
У меня была уже часть написана на PHP. Переписывать ее на Node — нужно было выучить фреймворк Express. Посчитал лишним и настроил общение c PHP через Memcached (умные люди советуют Redis, но мне хватило и мемкеша)
0
Тоже как-то для одной локальной задачи познакомился с WebSockets и нормальных решений не смог найти для серверной стороны (все громоздкие были для моей задачи). В итоге простейшую реализацию на перле написал по документации за полчаса.
+1
Хех, только решил Хабр глянуть перед тем как нечто подобное написать (пост о веб-сокетах на PHP и пример приложения, правда с взаимодействием «динамической» части с обычной «статической» через что-нибудь типа German) и вот, не успел…
-1
Кто использовал WebSockets, приведите примеры для чего?
-1
Ещё не использую, но планирую для уведомления одних клиентов о событиях на сервере и других клиентах.
0
Если нужно уведомлять только клиентов в реальном времени, зачем двусторонняя связь?
0
SSE не рассматривали или что-то подобное, что передаёт данные в реальном времени только на клиент?
0
Не вижу особой разницы с WS. Всё равно нужен будет демон, поддерживающий постоянные соединения с другими клиентами и механизм информирования демона.
0
В случае с SSE можно использовать обычный php файл (урл по которому будет запускаться php скрипт) и ничего не нужно устанавливать на сервере. Только убрать буферизацию, чтобы данные сразу отправлялись на клиент и в случае с php отпустить сессию session_write_close(), чтобы параллельные запросы работали от одного юзера.
Насколько это хуже или лучше не знаю!? Но настраивать гораздо проще чем с сокетами.
Насколько это хуже или лучше не знаю!? Но настраивать гораздо проще чем с сокетами.
0
Не понял как. Вот есть у меня 1000 клиентов, установивших соедение с сервером на предмет получения событий от него. С чем они это соединение устанавливают? С апачем? 1000 воркеров?
0
Выходит что так — будут висеть разные процессы и в них может быть разная логика. Не всем одно и тоже отсылается.
А сокет вы будете открывать получается один на всех? Без привязки к конкретному пользователю? и все подключенные пользователи будут получать абсолютно одинаковую информацию?
А сокет вы будете открывать получается один на всех? Без привязки к конкретному пользователю? и все подключенные пользователи будут получать абсолютно одинаковую информацию?
0
На одном сокете одного процесса могут висеть тысячи соединений и работа с ними происходить независимо.
0
А что вы планируете использовать для сокетов?
0
PhpDaemon. Уже есть поддержка сервера ws, уже есть проверенная временем реализация многопроцессного сервера, на базе libevent.
Ну, а в учебных целях или при незначительной нагрузке можно написать свой однопроцессный велосипед на базе обычных сокет-функций или даже многопроцессный на базе pcntl и semaphore, а то и с ptheads попробовать замутить, но подозреваю, что там будет много подводных камней.
Ну, а в учебных целях или при незначительной нагрузке можно написать свой однопроцессный велосипед на базе обычных сокет-функций или даже многопроцессный на базе pcntl и semaphore, а то и с ptheads попробовать замутить, но подозреваю, что там будет много подводных камней.
0
Баг странный… Есть два клиента. Перезапускаем демон, оба клиенте коннектятся, шлют сообщения, оба видят кто что шлет. Если у одного из клиента обновить страницу, то отсылаемые от него сообщения другой клиент уже не видит.
0
Исходники примера хотелось бы на git, с зависимостями в composer.json.
0
Only those users with full accounts are able to leave comments. Log in, please.
Быстрый старт с WebSocket на основе phpDaemon