Guzzle vs ReactPHP vs Amphp用于并行请求

lub*_*sdz 3 asynchronous guzzle reactphp amphp

有什么区别:

它们如何不同以及使用的典型用例是什么?

kel*_*nik 9

两者之间的主要区别在于Guzzle是一个HTTP客户端,而Amp和ReactPHP是通用的异步/事件循环库.这两者都基于它们提供的核心事件循环提供HTTP客户端.那是amphp/artaxreactphp/http-client.

现在,这些与Guzzle 之间的区别在于那些可以同时执行非HTTP请求的其他事情.也就是说,因为用户可以完全控制事件循环并且可以注册自己的I/O观察者和计时器,而Guzzle使用的事件循环在Curl内部对用户是隐藏的.

如果您只想制作一些并发的HTTP请求,那么决定主要归结为您喜欢的API以及性能考虑因素.如果要同时执行其他与I/O相关的操作,请使用Amp或ReactPHP.如果你想要流动你的身体,我建议不要使用Guzzle.


小智 5

嘿,ReactPHP 核心团队成员在这里。ReactPHP 和 Amp 都假设您正在构建一个带有事件循环的应用程序。如果您只想执行一堆异步请求然后继续,我建议使用 Guzzle 的异步请求:http://docs.guzzlephp.org/en/stable/quickstart.html#async-requests

如果您想更深入地了解异步请求,我建议您使用https://github.com/clue/php-buzz-react,它可以让您更好地控制流程,而且它支持 PSR-7。

  • 这个答案是不完整的。Amp 专门为不完全异步的应用程序提供了 [`Amp\Promise\wait()`](https://amphp.org/amp/promises/miscellaneous#wait)。ReactPHP 在外部 [`clue/php-block-react`](https://github.com/clue/php-block-react) 包中提供了类似的功能。它们与 Guzzle 之间的主要区别在于,Amp 和 ReactPHP 还允许其他非阻塞 I/O 和计时器,而不仅仅是并发 HTTP 请求。 (6认同)