PHP下的cURL库_PHP_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > PHP > PHP下的cURL库

PHP下的cURL库

 2014/3/29 17:14:28  ryan.liu  程序员俱乐部  我要评论(0)
  • 摘要:PHP下的cURL库主要有两个Requests和Guzzle,两个都很复杂。Requests优先使用cURL,没有cURL时会自动启用fsockets,除非你手工指定了Transport。Guzzle有丰富的日志库支持和日志格式,用插件订阅的方式订阅,从代码上看采用事件机制,质量更高。它只支持cURL(至少只v3版本是),并依赖于Symfony的EventEmitter,但它被ReactPHP所依赖。最近(2014-03-28)发现它从v3.8.1升级到v4.0.0rc
  • 标签:PHP URL

PHP下的cURL库主要有两个Requests和Guzzle,两个都很复杂。

?

Requests优先使用cURL,没有cURL时会自动启用fsockets,除非你手工指定了Transport。

?

Guzzle有丰富的日志库支持和日志格式,用插件订阅的方式订阅,从代码上看采用事件机制,质量更高。

它只支持cURL(至少只v3版本是),并依赖于Symfony的EventEmitter,但它被ReactPHP所依赖。

最近(2014-03-28)发现它从v3.8.1升级到v4.0.0rc,居然把Namespace改了,将前两段缩减为一段,源码目录也去掉了顶层的Guzzle,毫无意义还导致既不向前兼容,也和其他常见PHP库不一致。

?

现在是重点,Guzzle通常用得好好的,但昨天发现一个问题,有个远程的网址,有到支付宝去查询支付结果。调用这个网址时,Guzzle会不成功,但Requests可以。

?

下面是关于cURL命令的,其有两个超时时间,connect-timeout和timeout-max(后面这个通常在程序中就叫做timeout),其中后者包含前者,cURLl默认的connect-timeout是300秒,没有给timeout-max设置值,但由于包含关系,当你不设置timeout时,它至少也是300秒。

而对于PHP的fsockets,由于php.ini中有个配置项default_socket_timeout,其默认值才60秒。

另外cURL默认不支持http redirect,需要传递 -L 选项(无参数),但根据使用PHP和Python的经历,不少cURL库默认是开启了redirect,至少Guzzle的文档明确说了是开启了的,如果需要,要手动关闭。

?

?

依据:

?

curl默认的connect-timeout是300秒

https://github.com/bagder/curl/blob/master/lib/connect.h

?

3.8 How do I tell curl to follow HTTP redirects?

http://curl.haxx.se/docs/faq.html

上一篇: 人民币贬值波及海外代购:海淘族成本增加 下一篇: 没有下一篇了!
发表评论
用户名: 匿名