我正在使用Guzzle,我通过作曲家安装,并没有做一些相对简单的事情.
我可能误解了documentation,但基本上我想要做的是向服务器运行POST请求并继续执行代码而不等待响应.这就是我所拥有的:
$client = new \GuzzleHttp\Client(/*baseUrl, and auth credentials here*/);
$client->post('runtime/process-instances', [
'future'=>true,
'json'=> $data // is an array
]);
die("I'm done with the call");
现在假设运行时/进程实例运行大约5mn,我不会在那些5mn之前得到die消息…而是在消息发送到服务器之后我想要它.
现在我无法访问服务器,所以在运行执行之前我无法让服务器响应.我只需要忽略响应.
任何帮助表示赞赏.
我试过的事情:
$client->post(/*blabla*/)->then(function ($response) {});
解决方法:
在Guzzle中发送请求并立即退出是不可能的.异步请求要求您等待它们完成.如果不这样做,请求将不会被发送.
另请注意,您使用的是post而不是postAsync,前者是同步(阻塞)请求.要异步发送发布请求,请使用后者.在您的代码示例中,通过将post更改为postAsync,进程将在请求完成之前退出,但目标将不会收到该请求.