Использует ли кто ReactPHP в Production?

Появилась задача - прием и обработка большого массива данных.
Сейчас реализовано через связку nginx+phpfpm+rabbitmq. Объем поступающих данных довольно большой(~ 40 000 req/min). Состоит из двух частей - первый - принимает, делает простейшую валидацию данных и отправляет в rabbitmq. Вторая часть - бэкграунд скрипт, разбирающий очередь и обрабатывающий как надо.
Затык происходит на 1 этапе. "Иногда" немного стопорится phpfpm, из за высокой частоты запросов, все воркеры получаются занятыми - часть данных теряется.
Есть идея переписать первую часть на node.js, но плодить различные технологии не хочется, да и в свете выхода Php7 - ReactPHP кажется очень перспективным направлением.
Протестировали его(ReactPHP в связке с nginx в виде балансировщика), сделали небольшие нагрузочные тесты и он "вроде бы" выдерживает х10-15 раз запросов.
Есть у кого опыт успешного внедрения ReactPHP в проект? Есть известные подводные камни?
  • Вопрос задан
  • 5529 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Я использую, полет нормальный (где-то пол года уже)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
index0h
@index0h
PHP, Golang. https://github.com/index0h
php - stateless язык. Демоны на php безусловно можно писать, но это не его целевое применение.
Этап 1 ReactPHP не спасет. Увеличивайте количество воркеров nginx/fpm.

PHP7 станет по настоящему production ready только через года 2, если не более. Дело тут как в ошибках самого php, так и в зависимостях, которые вы используете, они должны поддерживать 7-ку в полной мере. Например $this->$some[$thing] меняет логику выполнения в 7-ке, последствия - не предсказуемы.

Посему я бы на вашем месте писал эту часть на ноде, предварительно увеличив количество процессов libuv. А в случае нехватки - поднимал множество процессов с балансировкой через nginx.
Ответ написан
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
13407242629490.jpgПочему вот просто так взять и не написать нативный сетевой демон на C?
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Почему не посмотрите на HHVM? Код переписывать не нужно, после некоторого количества запросов HHVM компилирует критические участки в машинный код и таким образом ускоряется ещё больше (изначально запросы скорее всего будут медленнее отрабатывать).
К стати, можно с HHVM запускать ReactPHP.
И ещё, ReactPHP всё ещё не умеет multipart запросы, если реализуете - отправьте pull request
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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