URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 115866
[ Назад ]

Исходное сообщение
"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для nginx[BR]"

Отправлено opennews , 21-Ноя-18 11:05 
Подготовлен (https://github.com/rryqszq4/ngx_php/releases) новый впуск модуля  ngx_php (https://github.com/rryqszq4/ngx_php/) с реализацией встраиваемого в nginx  интерпретатора языка программирования PHP. Модуль позволяет создавать обработчики запросов на PHP, модифицировать запрос/ответ, фильтровать тело ответа и заголовки, создавать заглушки для блокирования уязвимостей в web-приложениях, организовывать проверку доступа. По сравнению с запуском PHP при помощи fpm модуль ngx_php обеспечивает доступ к внутренним API nginx и демонстрирует существенный прирост производительности (от 2 до 10 раз).

    location = /nginx_request {
            content_by_php '
                echo ngx_request::document_uri();
                echo "ngx::query_args()\n";
                var_dump(ngx::query_args());
            ';
        }

URL: https://github.com/rryqszq4/ngx_php/releases
Новость: https://www.opennet.me/opennews/art.shtml?num=49643


Содержание

Сообщения в этом обсуждении
"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 11:05 
Теперь phar-архивы можно загружать и выполнять на удаленных серверах еще быстрее.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено нах , 21-Ноя-18 11:37 
круче - судя по образцу применения - их можно выполнять на боевых серверах прямо в конфиге сервера, без необходимости что-то там снаружи подсовывать.

P.S.но на самом деле это достижение - запилили таки mod_php в nginx. Давайте теперь еще и пихон туда же впихнем, я в вас верю!


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 12:17 
Этот же дев и питон запилил. Походу хобби такое

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено нах , 21-Ноя-18 13:16 
о, там еще и js!

ща понаскриптуем, век будете npm leftpad помнить!


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 11:45 
> демонстрирует существенный прирост производительности (от 2 до 10 раз).

В каких ситуациях? Множественные одновременные запросы?


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 12:10 
При выполнении специально подготовленного теста.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 12:21 
> демонстрирует существенный прирост производительности (от 2 до 10 раз)

Ткнуть бы щас носом в эту фразу моего начальника отдела, который доказывал мне, что интерпретатор, крутящийся в контексте сервера - это не модно, и что нжинксовый php_fpm эффективнее и быстрее отдаёт серверу сгенерированный контент, чем апачевский mod_php.


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено nondo , 21-Ноя-18 12:39 
>нжинксовый php_fpm

чё сказал?


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 12:48 
Речь про накладные расходы на взаимодействие nginx и php-fpm. В том же модуле всё происходит внутри nginx, потому этих расходов просто нет. Вопрос в итоговой разнице с учётом выполнения самого php-кода (который, разумеется, в обоих случаях выполняется одинаково по скорости). Думаю, разница в пределах погрешности на реальных кейсах. Ждём независимых бенчей

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено нах , 21-Ноя-18 13:21 
запросто может оказаться, что mod_php хуже fpm+nginx, и не в пределах погрешностей, а существенно - за счет разной структуры nginx и самого апача.

а выигрыш от замены fpm на это чудо в перьях скорее всего, действительно, окажется в пределах ошибки измерений, если код будет посложнее echo "hello"; или что там у них еще в тестах.

смысл чуда немножко не в этом (оно и не заточено в общем-то на замену fpm), а в скриптовании на пехепе  непосредственно внутри конфига nginx с использованием его внутренних переменных.
Ну то есть умеешь ты только пехепе, и то плохо, а lua никак, а надо что-то там поделать в конфиге - редирект там динамически сгенерить, или еще что - вот тебе прекрасное.

главное чтобы нам потом никогда не встретиться с сиим творением.


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Алеша , 21-Ноя-18 20:42 
Вась, этот самый fpm по скорости сравним с голым апач префорк+mod_php
Там в пределах погрешности разбежность
Ибо fastCGI точно так же нужно спавнить (форкать) как и - сюрпрайз! - древнючий как кака мамонта апач префорк. И прибивать время от времени, ибо течет...

А у апача есть - опять же сюрпрайз! - мегатехнология построенная на тредах, которая не нуждается в форканьи и лишена связанных с оным огромных накладных расходов.

А тут пошли ещё дальше - все в одном процессе, вообще без процессов/нитей. Плюсы - скорость в разы. Мынусы - подтекло или упало что-то одно - глюкануло все.

А сам по себе php-fpm никогда не был быстрее апача. Это тебе любой хостер скажет. Хватит уже распространять ламеро-заблуждения.. И единственная его килоер-фича - встроенный менеджер процессов fastCGI.


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p aka Jerom , 21-Ноя-18 21:10 
а прикол весь в том, что этот пхп не хранит стейта от запроса к запросу, и собственно вопрос, зачем в стейтлесс архитектуре на каждый запрос порождать процесс?

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено blblblblbl , 22-Ноя-18 00:33 
а где написано, что на каждый запрос порождается процесс, ы?

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p aka Jerom , 22-Ноя-18 02:58 
> а где написано, что на каждый запрос порождается процесс, ы?

php-fpm.conf открой, там есть параметры контроля количества чайлдов.

пс: в #top-ку


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено cutlass , 22-Ноя-18 04:20 
Выполни top и сможешь лицезреть то, что эти процессы висят постоянно , а не создаются.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p akaJerom , 22-Ноя-18 16:50 
))))) idle timeout - не не слышал, то что висят не значить, что 10к реквестов выполняет один процесс. Сделай эксперимент запусти 10 запросов в секунду на скрипт (<?php sleep(10);) и посмотри сколько у тебя процессов порадится одновременно.


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено cutlass , 23-Ноя-18 03:34 
У меня число минимальных, максимальных, и начальных процессов одинаково. Они , конечно перезапускаются каждые 10 минут, но в целом пул неизменен.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено blblblblbl , 23-Ноя-18 17:38 
магия настройки пула такая магия ^_^

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено blblblblbl , 23-Ноя-18 17:36 
у меня всего 5 штук, внезапно.
вот веришь, нет, в статик режиме, в динамике или в тредах, если ты делаешь sleep(10), то тебе ничто не поможет

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p akaJerom , 23-Ноя-18 18:37 
5 процессов пхп одновременно выполнят 5 запросов в секунду если время выполнения скрипта равно 1-ой секунде, из того, что по моему утверждению один запрос выполняет один процесс. Все остальные запросы будут помещены в такназываемый беклог и будут ждать пока не освободится один из процессов.

пс: откройте хоть исходники пхп и посмотрите как там идёт обработка соединений


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p akaJerom , 23-Ноя-18 18:55 
ну собственно и картинка

https://imh01-inmotionhosting1.netdna-ssl.com/support/images...


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено blblblblbl , 22-Ноя-18 00:32 
Я тебе так скажу. Самый лучший вариант для говнокодерства это апач + php-fpm, ресурсов жрёт почти как nginx + php-fpm, но при этом имеешь полноценный хтаксесс, что для легаси хорошо.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 22-Ноя-18 11:15 
apache + mod_php ( а впереди можно и nginx воткнуть ), это из опыта...
у apache есть большой плюс он умеет плодить php-потоки под узерами конкретных сайтов, т.е. сразу решается проблема с кросс доступом, из коробки.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено тигарэтоя , 22-Ноя-18 16:39 
а что мешает искользовать разные пулы, запуская под отдельными юзерами в случае php-pfm ?

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p aka Jerom , 22-Ноя-18 23:22 
апач работает под одним юзером, всякие mod_suphp подключать нужно, в случае с fpm - все из коробки пашет

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Анонес , 23-Ноя-18 00:52 
для схемы апач + php-fpm не нужен nginx, вообще никак

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p aka Jerom , 21-Ноя-18 21:06 
а как же блокировка процесса при выполнении пхп?

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 23:39 
Не пугай страусов, пол бетонный. Пушяй полетають..

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено cutlass , 22-Ноя-18 04:20 
Добавляешь больше воркеров в нгникс

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 22-Ноя-18 11:16 
100500???

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p akaJerom , 22-Ноя-18 16:52 
)))))))) чем вам воркер нджинкса поможет если пхп блокирующий и выполняется один запрос одним процессом, при 100rps с временем выполнения скрипта в 1s (секунду) у вас порадится 100 процессов.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено cutlass , 23-Ноя-18 03:43 
Насколько я понял новость, nginx_php будет выполнятся в нити воркера. Значит, чтобы избежать блокирования, вместо чилос воркеров=числу ЦПУ нужно увеличить число воркеров. Количество порождаемых процессов ограничивается настройками, во всяком случае в php-fpm (как там будет в nginx_php не совсем ясно).
  Видимо ты устанавливал php-fpm исключительно "из каропки" не утруждая себя настройкам
pm.start_servers, pm.min_spare_servers, pm.max_spare_servers. Отсюда радостно кукарекаешь про "у вас порадится 100 процессов.".
  В общем учи матчасть.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p aka Jerom , 23-Ноя-18 04:21 
>>Отсюда радостно кукарекаешь про "у вас порадится 100 процессов.". В общем учи матчасть.

)))))))))) всё ясно


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 25-Ноя-18 04:26 
они меряют производительность hello world.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено ыы , 21-Ноя-18 15:12 
оно как и перл в нжинксе - блокирует все пока не отработает?

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено нах , 21-Ноя-18 21:36 
судя по примерам - да, yeld надо дергать явно, если хочешь отдохнуть.


"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено cutlass , 22-Ноя-18 04:21 
или добавить воркеров

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p akaJerom , 22-Ноя-18 16:53 
ересь не несите

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено cutlass , 23-Ноя-18 03:43 
Обоснуй

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Sw00p aka Jerom , 23-Ноя-18 04:24 
выполни тест который я указал выше, отправь 100 одновременных запросов в секунду на один пхп скрипт который будет исполняться всего лишь одну секунду, и посчитай в ps или top сколько процессов форкнулось.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Ilya Indigo , 21-Ноя-18 16:31 
А .user.ini файлы, как в Apache/FastCGI, он будет читать и понимать?
Переопределять для разных хостов разные версии PHP, как в Apache/FastCGI можно?

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено unknown , 21-Ноя-18 19:53 
Это же не замена php-fpm,я на этом cms запустить не смогу.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Анончик , 22-Ноя-18 08:42 
Вот тоже интересно, насколько это возможно.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено Аноним , 21-Ноя-18 20:07 
А что сказали бы на это программисты из авито и баду?

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено View , 21-Ноя-18 21:59 
Они бы сказали: "Вопрос передан разработчикам"
:-D

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено xm , 22-Ноя-18 16:45 
Грубо говоря (поправьте меня) что цели те же, что и у встроенного в тот же nginx Luа или mRuby в H2O.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено тигар , 23-Ноя-18 14:39 
думаю, что да. ngx_пегл в ту же степь.

"Выпуск ngx_php 0.0.13, модуля с интерпретатором PHP для ngin..."
Отправлено тигар , 23-Ноя-18 14:41 
кстати, в ngx нет встроенного lua, это все благодаря продуктивному на модули китайцу, автору openresty. Если не ошибаюсь, работает во славу алиэкспресс, либо работал