Готовый перевод Mastering Swoole PHP: Build High Performance Concurrent System with Async and Coroutines / Осваиваем Swoole PHP: построение высокопроизводительной конкурентной системы с асинхронностью и корутинами: Блокирование ввода/вывода в PHP-FPM

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «идёт перевод»

Язык PHP создавался, как связующий слой для вызова сервисов, написанных на C, и блокирующая модель ввода-вывода присуща ему изначально. Почти во всех клиентских библиотеках, использующие операции I/O скрипты блокируются при выполнении на PHP-FPM, дожидаясь ответа от удалённых серверов.

На Рисунке 2.1 показаны четыре задачи, выполняемых друг за другом на одном из ядер процессора. Светло-серые области отражают время ожидания I/O. Как можно видеть, в этот момент загрузка процессора очень низка. Именно так, в целом, и работают процессы PHP-FPM.

Больше того, в Linux заблокированный процесс продолжает висеть в памяти и удерживает ресурсы, не позволяя выполняться никаким другим задачам.

Здесь на помощь приходит неблокирующий I/O. Пока одна задача ожидает ответа, мы можем переключиться на другие, и вернуться обратно, как только результат выполнения будет готов.

На Рисунке 2.2 серым цветом отмечено время работы ЦП, а светло-серым - время ожидания ввода-вывода. Четыре задачи запущены одновременно, и пока одна из задач ждёт результата операций I/O, другие используют свободное процессорное время. Именно так работают системы с неблокирующим I/O, к которым относится и Swoole.

Системы с неблокирущим I/O уменьшают время простоя процессора и позволяют выполнить большее количество задач за меньшее время. Вот почему Swoole способен обработать намного больше одновременных запросов, чем PHP-FPM. Подробнее на этой теме мы остановимся в следующих разделах.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: идёт перевод

Переведено на Нотабеноиде
http://notabenoid.org/book/81342/496682

Переводчики: Kee

Настройки

Готово:

100.00% КП = 1.0