Web服务器如何处理请求?

时间:2016-12-21 05:28:59

标签: php laravel parallel-processing request sequence

我使用php和laravel作为我的网络服务。

我想知道在这种情况下laravel存储和处理请求吗?

  1. 向许多用户的不同控制器发出请求;
  2. 向同一用户请求同一控制器。
  3. laravel是否按照请求到达的顺序将这些请求存储在队列中?

    laravel是否为不同的用户并行处理请求,并按顺序为同一用户?

    例如,用户有两个请求。这两个请求路由到同一控制器中的两个方法。虽然第一个请求将花费很长时间进行服务器端处理,但第二个请求将花费很少的时间。当用户设置第一个请求然后设置第二个请求时,尽管第二个请求花费很少的时间,服务器端将不会处理第二个请求,直到它完成处理第一个请求为止。

    所以我想知道laravel如何存储和处理请求?

2 个答案:

答案 0 :(得分:20)

Laravel不会直接处理请求,这是由您的网络服务器和PHP管理的。 Laravel收到您的网络服务器已经处理过的请求,因为它只是一个用PHP编写的工具,它处理与请求调用相关的数据。因此,只要您的Web服务器知道如何执行PHP并调用正确的index.php文件,Laravel就会被启动并处理它从Web服务器接收的请求数据。

因此,如果你的网络服务器能够接收2个不同的调用(通常是数百个),它将尝试实例化2个PHP(子)进程,并且你应该在内存中并行运行2个Laravel实例。

因此,如果您的代码依赖于其他代码,而这些代码可能需要很长时间才能执行,您必须自己在Laravel应用中处理。

我们通常只是将数据添加到数据库,然后从使用数据存储区中已有数据的计算中获取结果。因此,数据到达数据存储区的顺序无关紧要,首先得到的是最终结果总是相同的。如果您不能依赖这种方法,那么您必须准备好应用程序来处理它。

enter image description here

答案 1 :(得分:2)

PHP中的所有内容都是作为一个单独的进程启动的。这些进程彼此独立,直到某些共享资源出现在Picture中。

在您的情况下,一个用户被处理一个会话,并且会话默认基于文件。会话文件是进程的共享资源,这意味着您一次只能为一个用户调用一次PHP。

多个用户可以一次调用任意数量的进程,具体取决于您的系统功能。