Curl和HttpRequest之间的PHP区别

Posted

技术标签:

【中文标题】Curl和HttpRequest之间的PHP区别【英文标题】:PHP Difference between Curl and HttpRequest 【发布时间】:2010-10-26 13:50:36 【问题描述】:

我需要向服务器执行 RAW POST (PUT a $var) 请求,并接受来自该页面的结果作为字符串。还需要添加自定义HTTP头信息(如x-example-info:2342342)

我有两种方法

卷曲 (http://us.php.net/manual/en/book.curl.php) PHP HTTP 使用 HTTPRequest (http://us.php.net/manual/en/book.http.php)

两者有什么区别?什么更瘦?快点?两者在我看来几乎相同......

【问题讨论】:

【参考方案1】:

Curl 与 PHP 捆绑在一起,HTTPRequest 是一个单独的 PECL 扩展。

因此,CURL 更有可能安装在您的目标平台上,这几乎是大多数项目的决定因素。如果您打算只在您个人有能力安装 PECL 扩展的服务器上安装软件,我只会考虑使用 HTTPRequest;如果您的客户将进行自己的安装,那么安装 PECL 扩展通常是不可能的。

This page 似乎暗示 HTTPRequest 无论如何都使用 CURL。不过,听起来它可能会为 curl_multi_*() 提供更优雅的接口。

【讨论】:

【参考方案2】:

HTTPRequest(和 PECL 扩展)建立在 libcurl 之上。

http://us.php.net/manual/en/http.requirements.php

HTTPRequest 实际上只是执行相同任务的一种更简单/语法更友好的方式。

正如 Frank Farmer 所提到的,您更有可能拥有已安装 curl 的目标平台,并且可能难以让托管服务提供商安装 PECL 库。

【讨论】:

【参考方案3】:

HTTPRequest 是 curl 的“一种”包装器。手册中的这两个引用应该给你一个线索:

如果使用 CURL 支持构建,它会提供强大的请求功能。并行请求可用于 PHP 5 及更高版本。

必须使用 » libcurl 支持构建扩展以启用请求功能 (--with-http-curl-requests)。需要等于或高于 v7.12.3 的库版本。

说过(并说我自己从未使用过这个扩展),看起来如果你想让你的代码看起来更面向对象,你可以选择这个,但它可能会慢一点,虽然没有什么可比的与您将要拨打的外部电话,所以我不会考虑性能来做出我的选择。我会优先考虑 curl 是内置的这一事实,而另一个则必须自己添加,如果您想将应用程序托管在您无法控制的共享环境中,这很不方便并且会降低可移植性。

对于您在问题中解释的需求,我肯定会选择 curl。

【讨论】:

以上是关于Curl和HttpRequest之间的PHP区别的主要内容,如果未能解决你的问题,请参考以下文章

HostGator 上的 Linux 服务器显示未找到“HTTPRequest”类

PHP的curl模块和python的pycurl模块的区别

PHP cURL 超时设置 CURLOPT_CONNECTTIMEOUT 和 CURLOPT_TIMEOUT 的区别

php使用curl的post方法字符串和数组传值的区别

如何用PHP连接 curl方式的接口

AJAX 与 CURL