为什么我的应用程序阻塞响应客户端与KernelEvents::终止



我正在使用Symfony,其中一个功能是上传一些文件到Google Drive。当外部API(我无法控制)在特定路由上发送请求时,会触发此行为。

问题是文件上传到驱动器需要一些时间,而远程API只是超时等待响应。

我上网做了一些搜索,发现我可以使用listener: https://symfony.com/doc/current/components/event_dispatcher.html#connecting-listeners

问题是所有这些设置,响应仍然花费相同的时间。

服务目录:

private $eventDispatcher;
public function __construct(EventDispatcherInterface $eventDispatcher) {
$this->eventDispatcher = $eventDispatcher;
}

下面是我的Service,uploadFileToDriveMultiple(...)函数中的代码:

$this->eventDispatcher->addListener(KernelEvents::TERMINATE, function (Event $event) use ($prmParentFolderIdArray, $prmFilesNamesArray, $prmFilesPathsArray) {
// Upload here
});

在Controller中:

$serviceDrive->uploadFileToDriveMultiple($filesParent, $filesName, $filesPath);

我错过设置了什么吗?任何帮助都是感激的

谢谢你!

事实证明,我只需要php-fpm将使用fastcgi_finish_request: https://www.php.net/manual/en/function.fastcgi-finish-request.php

在修改我的DockerFile并重建映像后,它可以完美地工作。

该代码也适用于php,但您不会从中获得任何好处,因此,如果您试图实现相同的目标,请务必使用php-fpm

相关内容

  • 没有找到相关文章

最新更新