我有一个用 ReactPHP 和 FastRoute 开发的 API Rest。如果我从带有标题“连接:保持活动”的网络界面调用它,内存就会开始增加,直到内存崩溃。我尝试将标题更改为“连接:关闭”并且没有内存泄漏。
你知道为什么会这样吗? 我可以在 ReactPHP 服务器中禁用 keep-alive 吗?
谢谢
这是我的服务器的代码
$server = new Server($loop, new ErrorHandler(), new JsonRequestDecoder(), new CorsMiddleware([
'allow_origin' => [
'*',
'http://localhost:3000'
],
'allow_methods' => ['GET', 'POST', 'PUT', 'DELETE', 'HEAD', 'OPTIONS'],
'allow_headers' => ['DNT','X-Custom-Header','Keep-Alive','User-Agent','X-Requested-With','If-Modified-Since','Cache-Control','Content-Type','Content-Range','Range'],
'expose_headers' => ['DNT','X-Custom-Header','Keep-Alive','User-Agent','X-Requested-With','If-Modified-Since','Cache-Control','Content-Type','Content-Range','Range']
]), new Router($routes));
ReactPHP 维护者在这里。
这也在我们的 ReactPHP HTTP 组件中的 https://github.com/reactphp/http/issues/514 中得到了报告,我们几天前通过 https://github.com/reactphp 修复了这个问题/http/pull/515。正如您上面所说,这种情况仅在使用持久连接(保持活动)时发生,内存增长是因为连接关闭处理程序未针对每个请求正确清理。
我们目前正在关注一个新的reactphp/http
v1.10.0
,计划于下周左右发布,并将包含对此的修复。一旦发布,您就可以安装新版本,并且不会再遇到此问题。