PHP 中 cURL 有哪些好的用例?

What are nice use cases for cURL in PHP?

提问人:mario 提问时间:2/14/2011 最后编辑:mario 更新时间:3/19/2011 访问量:1602

问:

很明显,cURL 函数的使用非常广泛。但这是为什么呢?真的只是因为默认情况下主要启用扩展吗?

虽然我当然可以理解不引入第三方库而不是内置库(DOMDocument vs phpQuery),但使用 curl 对我来说似乎有些奇怪。有一堆 HTTP 库,如 Zend_HttpPEAR Http_Request。尽管我不屑于不必要的面向对象接口,但相比之下,curl 的 pull-parameter-procedural API 让我感到不那么清晰。

这当然是有原因的。但是我想知道大多数PHP开发人员是否意识到libcurl实际上还可以用于什么,并且它不仅仅是一个HTTP库

您是否有示例或实际代码将 cURL 用于<任何其他事情>它所用于的?

或者,如果您只是将其用于HTTP,原因是什么。为什么现在似乎避免了真正的PHP HTTP库?

php 卷曲

评论

0赞 Jonah 2/14/2011
无知似乎是最可能的原因。
4赞 Pekka 2/14/2011
curl 曾经是唯一可以处理 cookie、POST、文件上传的东西......很多 curl 的使用可能来自早于 PHP 5 的教程。你经常读到以“我听说我需要为此使用 curl ,....”开头的 SO 问题
6赞 Dan Grossman 2/14/2011
这是一个咆哮,而不是一个有具体答案的编程问题。题外话。
0赞 deceze 2/14/2011
它是非常古老、广泛使用且经过充分测试的代码,工作可靠,通常默认启用,并允许对请求的细节进行非常精细的控制。除了界面丑陋之外,没有真正的理由抱怨它。如果你选择的框架/库没有更好的集成库,为什么不使用它呢?也同意@Dan,这是S&A。
1赞 deceze 2/14/2011
@mario 不,这实际上不是问题所在。问题在于,对于“cURL 的良好用例”这一主要问题,没有客观的答案,甚至没有一个答案。是的,我正在读“笨拙......应用程序接口。。。在我看来,就像“抱怨”一样弱智。宗隅。;o))

答:

2赞 Jacob 2/14/2011 #1

我认为这与为什么人们使用 mysql 函数而不是 mysqli(更面向对象的接口)或更进一步并使用数据抽象层或 PDO 有关。

HTTP_Request2说有一个 cURL 适配器可用于包装 PHP 的 cURL 函数。

就我个人而言,我尝试过的很多 PEAR 扩展都没有给我留下深刻的印象(而且我对处于 alpha 阶段的 PEAR 库没有那么自信,这些库已经很久没有更新了)。而HTTP_Request2图书馆看起来确实不错

我本来会使用 cURL,而不会考虑查看要使用的 PEAR 库。所以谢谢你提高我的意识。

评论

1赞 mario 2/14/2011
这似乎是一个非常相关的原因。+1 如果 cURL 看起来比 PEAR 实现(或任何其他类)的质量更好,那么选择 curl 是一个合理的理由。
0赞 Phil 2/14/2011
您还可以将 cURL 指定为连接器,而不是默认套接字选项(为什么有人会这样做,我不能说)Zend_Http_Client
0赞 Jacob 2/14/2011
我想这更多地反映了数据库抽象层。
0赞 mario #2

评论中提到的功能原因:

  • 它非常古老,[广泛使用和]经过充分测试的代码,工作可靠
  • 通常默认启用
  • 允许对请求的细节进行非常精细的控制。
    • 这可能需要扩展。根据公分母协议的性质,API cURL 可能提供 PHP 中的普通 HTTP 库无法提供的功能......

历史原因:

  • curl 曾经是唯一可以处理 cookie、POST、文件上传的东西......
  • 很多 curl 的使用可能来自早于 PHP 5 的教程
1赞 Christian 3/19/2011 #3

你提到的库不是默认的,根据我在 PHP 中的经验,我更喜欢少使用这样的库;它们使攻击面更广,可靠性降低,比PHP本身更容易被修改/弃用。

然后是套接字功能,虽然我已经使用过几次,但我更喜欢尽可能依赖更高级别的方法。

我用 CURL 做什么?

正如一些人可能知道的那样,我目前正在研究一个PHP框架。通信核心扩展(适当地称为“连接”)使用 CURL 作为其基础。

我已经广泛地使用它,从从网站中提取网站图标(连同解析器实用程序和其他东西)到通过 HTTP 的标准 API 调用,以及禁用 PHP 的 FTP 时的 FTP 层(通过流包装器)——我们都知道原生 PHP FTP 不是那么可靠。

评论

0赞 mario 3/19/2011
大概就是这样。默认值(不是特定功能)是使 curl 最有吸引力的原因?-- FTP的使用是我所追求的(需要重新调整问题的用途)。完全与不喜欢 PHP ftp_功能有关。- 但是,您是否曾经在单个 curl 使用块中使用过 HTTP+FTP(交替)?
0赞 Christian 3/19/2011
我不能肯定地说,你知道框架是如何建立起来的;我最终可能会在不了解自己的情况下这样做。但我认为 CURL 在易于使用的功能和默认性之间取得了完美的平衡——前者在许多低级功能中缺失,后者在 PHP 扩展中缺失。
0赞 chelmertz 3/20/2011
好吧,cURL 是默认的,它很受欢迎,但我不得不自己安装它。也就是说,它没有捆绑在一起。
0赞 Christian 3/21/2011
chelmertz - 您的服务器情况如何(托管服务提供商、服务器软件、PHP 版本)?我总是发现它在 HostGator 服务器上可用(至少从 PHP 5 开始)。虽然我确信 WAMP 在 Windows 上默认禁用了 CURL(所有版本 AFAIK)。