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


Я использую php и laravel в качестве своего веб-сервиса.

Я хочу знать, хранит ли laravel и обрабатывает ли запросы в такой ситуации?

  1. запросы к различным контроллерам от многих пользователей;
  2. запросы к одному и тому же контроллеру от одного и того же пользователя.

Хранит ли laravel эти запросы в очереди в той последовательности, в которой были получены запросы?

Является ли laravel параллельным процессом запросов для разных пользователей и последовательно для одного и того же пользователя?

Для например, есть два запроса от пользователя. Два запроса направляются к двум методам в одном контроллере. В то время как первый запрос будет стоить много времени для обработки на стороне сервера, второй будет стоить очень мало времени. Когда пользователь настраивает первый запрос, а затем второй, хотя второй стоит очень мало времени, серверная сторона не будет обрабатывать второй запрос, пока не завершит обработку первого.

Поэтому я хочу знать, как laravel хранит и обрабатывает просьбы?

Author: Kris Roofe, 2016-12-21

2 answers

Laravel не обрабатывает запросы напрямую, это то, что управляется вашим веб-сервером и PHP. Laravel получает запрос, уже обработанный вашим веб-сервером, потому что это всего лишь инструмент, написанный на PHP, который обрабатывает данные, связанные с вызовом запроса. Итак, до тех пор, пока ваш веб-сервер знает, как выполнять PHP, и вызывает правильный index.php файл, Laravel будет загружен и обработает данные запроса, которые он получает с веб-сервера.

Итак, если ваш веб-сервер способен принимать 2 различные вызовы (обычно они делают это сотнями), он попытается создать 2 PHP (подпроцесса), и у вас должно быть 2 экземпляра Laravel в памяти, работающих параллельно.

Поэтому, если у вас есть код, зависящий от другого кода, выполнение которого может занять слишком много времени в зависимости от многих других факторов, вам придется иметь дело с этим самостоятельно, в вашем приложении Laravel.

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

enter image description here

 20
Author: Antonio Carlos Ribeiro, 2017-01-01 16:09:16

Все в PHP начинается как отдельный процесс. Эти процессы независимы друг от друга до тех пор, пока не появится какой-либо общий ресурс.

В вашем случае один пользователь обрабатывается одним сеансом, а сеансы по умолчанию основаны на файлах. Файл сеанса является общим ресурсом для процессов, что означает, что вы можете одновременно выполнять только один вызов PHP для одного пользователя.

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

 2
Author: anwerj, 2016-12-30 13:56:40