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
相关推荐
开启php curl函数库的步骤 1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/ 2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下 3).重启apache
一个PHP curl get post通用类,curl 通用方法 。。get /post 传送数据,设置发送方式 0 get 1 post。具有很好的参考价值,朋友们如果喜欢可以下载,如果有更好的curl类可以发布到我们php中文网,大家一起学习交流。
PHP技巧PHPCURL函数库
php的curl库简单实用,其中包含了网页抓取和远程登录
开启php curl函数库的步骤 1).去掉windows/php.ini 文件里;extension=php_curl.dll前面的; /*用 echo phpinfo();查看php.ini的路径*/ 2).把php5/libeay32.dll,ssleay32.dll复制到系统目录windows/下 3)....
PHP的cURL库简介及用法示例_.docx
Laravel开发-curl Laravel5框架的定制php curl库-由Ixudra开发
php-httplib是一个基于php curl库封装的http类库,简单易用的同时兼顾性能及功能,可完美解决您的web请求需求!
php-httplib是一个基于php curl库封装的http类库,简单易用的同时兼顾性能及功能,可完美解决您的web请求需求!
PHP 支持 Daniel Stenberg 创建的 libcurl 库,能够连接通讯各种服务器、使用各种协议。libcurl 目前支持的协议有 http、https、ftp、gopher、telnet、dict、file、ldap。 libcurl 同时支持 HTTPS 证书、HTTP POST、...
利用PHP中的 Curl 请求API PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。 libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl...
PHP中的CURL函数库.pdf
简单的 PHP-cURL 库要求PHP 5.1+ 卷曲特征通过 HTTP POST/GET/PUT/DELETE 请求HTTP 认证跟随重定向返回错误字符串提供调试信息代理支持饼干下载例子 $curl = New Curl;简单调用这些都在一行代码中完成,让生活变得...
curl.class.php PHP的curl库的包装器
如果你可以在网页上看到下面的输出,那么表示cURL库已被开启。 如果你看到的话,那么你需要设置你的PHP并开启这个库。如果你是在Windows平台下,那么非常简单,你需要改一改你的php.ini文件的设置,找到p
curl, 用于发出异步HTTP请求的PHP 5.4 库 现在,这个存储库不再主动开发。 这是一个有趣的旅程,但现在有更好的图书馆。 如果有人想接管项目的进一步发展,让我知道 ! jyggen/curl jyggen/curl是一个用于进行异步...