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