PHP под Apache реентерабельным? - PullRequest
5 голосов
/ 08 марта 2011

Просто теоретический вопрос.

говорят, что мой сайт состоит из формы, которая использует почтовые функции PHP для отправки электронной почты. У меня 500 пользователей, которые нажимают кнопку «Отправить» одновременно. Теперь 500 писем в 500 различных сессиях должны быть отправлены из PHP.

это будет сделано одновременно? сколько потоков задействовано? каждый из них будет блокировать других и делать это один за другим?

Ответы [ 2 ]

4 голосов
/ 08 марта 2011

Вам нужно подумать о двух вещах.

Первая - это то, как настроен ваш веб-сервер.Если вы используете Apache, есть несколько модулей обработки , из которых можно выбрать.Самый популярный модуль обработки - prefork , в котором есть один родительский процесс и несколько дочерних процессов.Каждый ребенок обрабатывает один запрос за раз.Это полностью исключает многопоточность, поскольку не все модули Apache являются поточно-ориентированными.Вы также можете найти модуль worker где-нибудь в производстве.Он использует комбинацию разветвления и потоков для обслуживания нескольких запросов на каждого потомка.Он может использоваться только тогда, когда каждый отдельный модуль Apache и все его зависимости являются поточно-ориентированными.

Вторая вещь, о которой стоит подумать, это сам PHP.Хотя основной язык PHP и некоторые расширения являются поточно-ориентированными, многие расширения не являются поточно-ориентированными.По этой причине, когда вы используете Apache и mod_php, модуль обработки prefork - ваш лучший выбор.(Сам PHP не имеет внутренней концепции потоков.)

tl; dr: Apache + PHP = один запрос на каждого дочернего элемента Apache.Обычно у вас будет только 20-30 детей Apache, что означает 20-30 возможных одновременных запросов.Это зависит от конфигурации.

1 голос
/ 08 марта 2011

На сервере linux электронные письма отправляются с помощью локальной команды sendmail. Это немедленно принимает сообщение и возвращает. Остальная часть работы выполняется вашим MTA (асинхронно), который укрепляется и оптимизируется на протяжении десятилетий для таких работ, как эта.

...