【发布时间】:2021-11-05 04:36:23
【问题描述】:
我使用 laravel 框架创建了一个 Web 项目。在我的网络中,有一个用户可以填写的表格。当用户点击提交按钮时,控制器将被 POST 方法调用。控制器将运行一些批处理文件(在 Windows 上)以获取结果视图的输出。以下是我运行批处理文件的方式:
exec(bat 路径);
在控制器中运行的进程可能需要大约六分钟。但不知何故,当控制器上运行一个进程时,其他用户无法访问网络,甚至登录页面。所以当我们按下登录时,它将继续加载,直到控制器中的进程完成,然后登录页面将打开。
我运行项目的方式是使用 php artisan serve。有谁知道为什么会发生这种情况?我希望网络能够同时运行多个进程。在这种状态下,我的网络似乎一次只能运行一个进程。
【问题讨论】:
-
您可以同时运行多个进程。也许正在运行的任务对服务器来说是“繁重”的方式?
-
当您使用 php-fpm 运行项目时 - 这将是多进程。顺便说一句,在异步模式下使用 Laravel 作业。
-
将队列工作者与主管、多个进程一起使用,并且从主管配置文件中,您可以使用您需要的进程数。
-
会话锁可能是这种情况。您正在使用什么会话处理程序?
-
@Constantine 我使用 laravel 会话。我只是将它添加到登录控制器: $request->session()->put('user', ['username' => Auth::user()->username, 'user_role' => Auth::user( )->角色]);然后我创建一个中间件来检查会话。我已经尝试在我的代码中删除会话处理程序,但是当控制器中有进程时,网络仍在等待。