Выбор ответа Junior Производительность: OPcache и FPM спрашивают часто обновлено
Модель исполнения PHP-FPM
Вопрос
Как PHP-FPM обрабатывает запросы?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Пул воркеров, каждый ведёт один запрос за раз. FPM держит пул заранее запущенных процессов.
Варианты ответа
- Один процесс с отдельным потоком на каждый запрос
- Асинхронный цикл событий в одном процессе, как в Node.js
- Новый процесс на каждый запрос, как классический CGI
- Пул воркеров, каждый ведёт один запрос за разправильный ответ
Разбор
FPM держит пул заранее запущенных процессов. Каждый воркер берёт запрос, выполняет скрипт от начала до конца и освобождается, а память и объекты запроса уничтожаются (share-nothing). Поэтому параллельность равна числу воркеров, а медленный запрос занимает воркер целиком. Новый процесс на запрос это классический CGI, асинхронный цикл есть в Swoole, RoadRunner и FrankenPHP (worker mode).
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.