Heim  >  Artikel  >  Backend-Entwicklung  >  php curl库用法简介

php curl库用法简介

WBOY
WBOYOriginal
2016-07-25 08:53:31787Durchsuche
本文介绍了php中curl库的用法,php下的curl库主要有两个requests和guzzle,两个都很复杂,有需要的朋友参考下。

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



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn