swoole / rfc

Swoole 提案
116 stars 3 forks source link

HttpServer支持请求超时控制 #59

Open hhxsv5 opened 5 years ago

hhxsv5 commented 5 years ago

背景

目前在Swoole\Http\Server中每个请求的最大执行时间没有限制,无法终止一些耗时的请求,只有靠上层Nginx配置proxy_read_timeout来间接地取消请求,但这样对客户端不够友好。

提议

希望能增加配置项time_limit来限制每个请求的最大可执行时间(类似于set_time_limit),超时后能有个回调,来动态地给出超时的响应。

$serv->set([
    'time_limit' => 30, // 每个请求的最大执行时间 30s,设置为0表示不限制
    'time_limit_callback' => function(Swoole\Http\Request $request, Swoole\Http\Response $response, $timeLimit) {
        $response->end(sprintf('响应超时:%.1f秒', $timeLimit));
    }
]);
hhxsv5 commented 4 years ago

@matyhtf @twose 有可能支持吗?

hhxsv5 commented 3 years ago

有更新吗?