Доброго времени суток. Вопрос такой: допустим, 2 клиента одновременно начали загрузку страницы. Правильно ли я понимаю, что пока первому клиенту не придёт ответ, второму apache даже не начнёт выполнение php-кода?
Паралельное выполнение:
Приходит клиент, запрашивает данные (php, html, js, json - да все что угодно),
сервер выдает под него ресурсы и он работает,
другие клиенты также приходят и получают свои ресурсы...
Welaurs:
Верно, но тут могут быть затыки с разных старон - для этого есть кеширование на многих уровнях да и много чего другого.
У каждого приложения своё узкое место может быть....
Но скорее даже не в очередь а даст отказ в. обслуживании...
Выделяется место для клиента -> интерпритируется код (если это php/python или еще что-то) -> отдается результат (html, json, xml - не важно что). Если сервер перегружен и испытывает максимальное количество соединений, то он ставит соединения в очередь и ждет, пока освободятся ресурсы.
Если бы процесс был один, то все именно так и происходило бы.
Однако процессы умеют размножаться. В частности, апач для обработки каждого запроса порождает дочерний процесс. Таким образом поддерживается одновременное обслуживание нескольких клиентов.
Апач порождает а) новый процесс-обработчик б) новый поток-обработчик (в зависимости от того, с каким диспетчером работает). Каждый процесс/поток выполняет свою копию php, и свою копию скрипта.