求教Guzzle的异步用法

现在需要通过调用api发送大约500封邮件

$this->client->requestAsync('GET', $sendUrl);

现在只想触发api的邮件发送,因为发送时间过长, 所以采用异步, 并不想及时拿到结果, 因为容易超时, 但是我这样写并没有执行, 求具体使用方法.

阅读 7.2k
2 个回答

php本身是单线程的,意味这一旦开始允行,他将一条道走到黑,所以当在执行

$this->client->requestAsync('GET', $sendUrl);

返回一个Promise,但是该请求其实并未发出。你可以调用wait

$response = $this->client->requestAsync('GET', $sendUrl)->wait();

方法执行该请求,但这样做和同步执行有区别吗?

开头说了, php本身是单线程的,运行到GuzzleHttp->requestAsync时,他没法fock线程去执行他。所以你可能要重新定义GuzzleHttp发送异步请求的含义了。


参考

你可以用 Guzzle 的 Multi去做。本质上是用了 curl 的 multi 实现的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题