laravel 可终止中间件在返回响应之前被调用

问题描述 投票:0回答:1

我使用 postman 查询我的 laravel API,并且在 postman 收到结果之前调用中间件中的终止方法:

路线

 Route::any('/lookup', 'LookupController@lookup')->name('lookup')->middleware(\App\Http\Middleware\LogRequest::class);

中间件

namespace App\Http\Middleware;

use Closure;


class LogRequest
{
    public function handle($request, Closure $next)
    {
        return $next($request);
    }

    public function terminate($request, $response)
    {
        sleep(10);
    }
}

当我删除

sleep(10);
时,响应会提前 10 秒到达,因此我确信服务器在实际返回响应之前会等待终止完成。

laravel middleware
1个回答
0
投票

您需要有 FastCGI 才能工作,fastcgi_finish_request() 函数必须可用。我对 Laravel Sail 也有同样的问题

运行可终止中间件需要 PHP 的 fastcgi_finish_request() 函数,该函数会关闭与客户端的连接,同时保持 PHP 工作线程可完成请求(即执行 Terminate() 方法中的代码)。

© www.soinside.com 2019 - 2024. All rights reserved.