我使用Laravel Swoole Coroutine go
函数来执行HTTP请求,以获得更好的性能。当我从外部服务获得响应时,将在数据库中创建一个新条目,其中包含来自外部服务的数据。
我希望能够从控制器返回一个带有新DB记录的响应。但是,似乎go
之外的任何东西都无法访问go
函数中分配的任何内容。我知道这是在一个单独的线程中发生的,但是有没有一种方法可以实现这一点,以便我可以访问go
函数内部的结果?
请注意,我已经全局启用了协程,我只能使用如下所示的函数:
public function store(User $user, Request $request) {
go(function () {
// get data from external API using Laravel HTTP Client
...
$user = User:create($data);
return response($user, 201)->send();
});
}
我试过使用WaitGroup()
,但如果我用Co\run
函数 Package 它,它会抱怨事件循环已经启动。
1条答案
按热度按时间yuvru6vn1#