PHP CURL api 是不是比使用流进行 HTTP/HTTPS 访问更干净/更快/更好?

Posted

技术标签:

【中文标题】PHP CURL api 是不是比使用流进行 HTTP/HTTPS 访问更干净/更快/更好?【英文标题】:Is the PHP CURL api cleaner/faster/better than using streams for HTTP/HTTPS access?PHP CURL api 是否比使用流进行 HTTP/HTTPS 访问更干净/更快/更好? 【发布时间】:2011-08-26 21:48:35 【问题描述】:

我目前非常专门地使用 php 流上下文功能(请参阅 http://us2.php.net/manual/en/function.stream-context-create.php)来访问 HTTP 资源,并且我已经能够成功地使用它来执行 PUT、DELETE、POST、管理 cookie 以及我所做的几乎所有事情。我需要做的。我最初开始使用它是因为我在早期的 Debian PHP cURL 构建中遇到了 SSL 问题(Apache 进程中存在一个 OpenSSL 双重初始化问题,在尝试访问 SSL url 时出错):这些可能现在已经修复,但我还没有有机会回去。

在与朋友的讨论中,他认为 cURL api 更快/更好,所以我想问:对于哪个选项更好,以及在哪些方面有任何明确的经验/知识?

【问题讨论】:

cURL 是 usually speedier 请求处理。但我不会将 API 归类为“更好”。为什么要使用原始 fopen/stream 函数而不是 HTTP 实用程序类? 懒惰,主要是:我在 2 年前写了一段代码,并一直在我需要的地方复制粘贴它,坦率地说,它的代码行通常很少,以至于我没有费心包装它。 【参考方案1】:

根据我的经验,流非常简洁。你可能已经知道了,但这里有一篇关于流的帖子,以防万一:

http://fabien.potencier.org/article/44/php-iterators-and-streams-are-awesome

Curl 又好又快,而且简单;但老实说,出于性能原因,我不会更喜欢其中一个。我从来没有测量过,但我怀疑它与首先执行远程请求的开销相比有多大差异。

【讨论】:

不知道迭代器位,而 S3 流包装器非常漂亮:必须深入研究。感谢您的回答。【参考方案2】:

关于性能,cURL wins by a lot consistently。我不会否认它更难使用,而且对于一般用途来说可能无关紧要,但差异非常显着,我认为值得指出。

【讨论】:

请参阅第二个答案以获得相对化“很多”的结果。 是的,我确实看到了;测试间隔一年进行的事实对较早的情况没有帮助。尽管如此,最终的正面交锋结果是相同的。我确实更新了我的答案以反映这一点。 这是 6 年前的事了。现在 PHP 已经经历了一次大修和几次小修,它仍然成立吗?

以上是关于PHP CURL api 是不是比使用流进行 HTTP/HTTPS 访问更干净/更快/更好?的主要内容,如果未能解决你的问题,请参考以下文章

PHP 中的 CURL 是不是支持 SPDY?

PHP - 为啥使用 Guzzle 而不是 cURL?

php curl

PayPal REST API - 使用 PHP 和 curl 进入实时模式

使用 Tumblr PHP API 时出现致命错误 cURL 错误 60 [重复]

使用授权密钥和秘密的 PHP Curl API GET 调用