提问人:mario 提问时间:2/14/2011 最后编辑:mario 更新时间:3/19/2011 访问量:1602
PHP 中 cURL 有哪些好的用例?
What are nice use cases for cURL in PHP?
问:
很明显,cURL 函数的使用非常广泛。但这是为什么呢?真的只是因为默认情况下主要启用扩展吗?
虽然我当然可以理解不引入第三方库而不是内置库(DOMDocument vs phpQuery),但使用 curl 对我来说似乎有些奇怪。有一堆 HTTP 库,如 Zend_Http 或 PEAR Http_Request。尽管我不屑于不必要的面向对象接口,但相比之下,curl 的 pull-parameter-procedural API 让我感到不那么清晰。
这当然是有原因的。但是我想知道大多数PHP开发人员是否意识到libcurl实际上还可以用于什么,并且它不仅仅是一个HTTP库?
您是否有示例或实际代码将 cURL 用于<任何其他事情>它所用于的?
或者,如果您只是将其用于HTTP,原因是什么。为什么现在似乎避免了真正的PHP HTTP库?
答:
我认为这与为什么人们使用 mysql 函数而不是 mysqli(更面向对象的接口)或更进一步并使用数据抽象层或 PDO 有关。
HTTP_Request2说有一个 cURL 适配器可用于包装 PHP 的 cURL 函数。
就我个人而言,我尝试过的很多 PEAR 扩展都没有给我留下深刻的印象(而且我对处于 alpha 阶段的 PEAR 库没有那么自信,这些库已经很久没有更新了)。而HTTP_Request2图书馆看起来确实不错
我本来会使用 cURL,而不会考虑查看要使用的 PEAR 库。所以谢谢你提高我的意识。
评论
Zend_Http_Client
评论中提到的功能原因:
- 它非常古老,[广泛使用和]经过充分测试的代码,工作可靠
- 通常默认启用
- 允许对请求的细节进行非常精细的控制。
- 这可能需要扩展。根据公分母协议的性质,API cURL 可能提供 PHP 中的普通 HTTP 库无法提供的功能......
历史原因:
- curl 曾经是唯一可以处理 cookie、POST、文件上传的东西......
- 很多 curl 的使用可能来自早于 PHP 5 的教程。
你提到的库不是默认的,根据我在 PHP 中的经验,我更喜欢少使用这样的库;它们使攻击面更广,可靠性降低,比PHP本身更容易被修改/弃用。
然后是套接字功能,虽然我已经使用过几次,但我更喜欢尽可能依赖更高级别的方法。
我用 CURL 做什么?
正如一些人可能知道的那样,我目前正在研究一个PHP框架。通信核心扩展(适当地称为“连接”)使用 CURL 作为其基础。
我已经广泛地使用它,从从网站中提取网站图标(连同解析器实用程序和其他东西)到通过 HTTP 的标准 API 调用,以及禁用 PHP 的 FTP 时的 FTP 层(通过流包装器)——我们都知道原生 PHP FTP 不是那么可靠。
评论