我正在使用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