Выбор ответа Junior Производительность: OPcache и FPM спрашивают часто обновлено

Модель исполнения PHP-FPM

Вопрос

Как PHP-FPM обрабатывает запросы?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Пул воркеров, каждый ведёт один запрос за раз. FPM держит пул заранее запущенных процессов.

Варианты ответа

  1. Один процесс с отдельным потоком на каждый запрос
  2. Асинхронный цикл событий в одном процессе, как в Node.js
  3. Новый процесс на каждый запрос, как классический CGI
  4. Пул воркеров, каждый ведёт один запрос за разправильный ответ

Разбор

FPM держит пул заранее запущенных процессов. Каждый воркер берёт запрос, выполняет скрипт от начала до конца и освобождается, а память и объекты запроса уничтожаются (share-nothing). Поэтому параллельность равна числу воркеров, а медленный запрос занимает воркер целиком. Новый процесс на запрос это классический CGI, асинхронный цикл есть в Swoole, RoadRunner и FrankenPHP (worker mode).

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.