unit-0.2 beta release

S.A.N nginx-forum на forum.nginx.org
Пт Окт 20 19:03:22 UTC 2017


Я уже подымал эту тему на Github
https://github.com/nginx/unit/issues/6

Будет хорошо создать здесь отдельные maillist для Unit.

Я согласен с теми кто считает что Unit сложно будет конкурировать с
PHP-FPM.

1. Простота в настройке и запуске разных версий РНР - это совсем не сложно,
есть пакеты Remi разных РНР версий, подключаешь их все как хочешь, проблем
нет, но с каждым годом потребности в РНР 5 будет все меньше, все переходят
на РНР 7+.

2. Производительность, пока что говорить рано, но уже понятно что для
статики и кеширование пока что нужен Nginx, значит Unit нужно проксировать,
это означает дополнительный сокет рассходы, Browse -> Nginx -> Unit это тоже
самое как сейчас Browse -> Nginx -> FPM, когда Unit научитися отдавать
статику и кешировать ответы тогда вопрос кто будет заниматься балансировкой,
сейчас это делается в Nginx указываются пулы upstream к удаленным FPM
бекендам, это значит что Unit тоже придется проксировать если нужна
балансировка нагрузки.


Но, я вижу свободную и перспективную нишу для Unit, дело в том что PHP-FPM
нужен только тем РНР скриптам которые "умирают" после каждого запроса. Мы
уже три года в продакшене используюм РНР скрипты которые запускаются через
PHP-cli с модулем libuv он нужен для evetloop и асинхрого I/O, на РНР
написан НТТР сервер который асинхорно обрабатывает все НТТР запросы от
Nginx. Это работает на 40% быстрей чем Node.js и 200% чем PHP-FPM и дает
много возможностей websocket и много другое.

Короче говоря в РНР нет промышленного App Server, как в Node.js, ваш Unit
отличный претендент на роль True App Server для PHP, то что сейчас в Unit
пулы отдельных РНР процессов которые очищают состояния скрипта после каждого
запроса, это не круто, и для этого уже есть хорошее решения - PHP-FPM.

Мне от Unit, нужны только три event в userland моего скрипта, причем очень
правильно если бы Unit умел не только НТТР но и Websocket, вот event которые
универсальны для НТТР и для Websocket, бекенд будет полностью абстрагирован
от протокола клиента.

onOpen - новое соединения
onMessage  - новое сообщения или новый запрос если это НТТР протокол
onError - ошибка.
onClose - коректное завершения соединения.

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

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,276967,277004#msg-277004



Подробная информация о списке рассылки nginx-ru