PHP下的cURL库

简介: PHP下的cURL库主要有两个Requests和Guzzle,两个都很复杂。   Requests优先使用cURL,没有cURL时会自动启用fsockets,除非你手工指定了Transport。

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

目录
相关文章
|
3月前
|
JavaScript Linux PHP
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
145 3
composer如何安装以及举例在PHP项目中使用Composer安装TCPDF库-优雅草卓伊凡
|
6月前
|
PHP
基于PHP开发的资源库系统源码
基于PHP开发的资源库系统源码
145 13
|
6月前
|
Linux PHP iOS开发
PHP-Raylib 视 频 游 戏 编 程 库
php-raylib 是基于 PHP-FFI 绑定的 raylib-v5.5 游戏开发库,让 PHP 开发者轻松实现视频游戏编程。相比仅支持 4.+ 版本的原库,本项目适配最新 5.5 版本,并提供友好文档与示例代码(如窗口初始化、文本绘制等)。支持 PHP 7.4+ 和多平台(Windows、Linux、macOS),可通过 Composer 快速安装。欢迎贡献和完善![查看文档](http://raylib.kllxs.top/) 或访问仓库(GitHub/Gitee/Gitcode)。
PHP-Raylib 视 频 游 戏 编 程 库
|
7月前
|
JSON API Go
基于责任链与策略模式的轻量级PHP日志库设计
项目日志乱成一团,bug 时好时坏,服务器问题难以复现?我写了个 PHP 日志系统,第一时间发现问题,避免跑路。实现了责任链模式+策略模式,让日志存储更灵活,支持多种输出方式。
|
8月前
|
监控 定位技术 PHP
使用PHP接入纯真IP库:实现IP地址地理位置查询
本文介绍了如何使用PHP接入纯真IP库(QQWry),实现IP地址的地理位置查询。纯真IP库是一个轻量级的IP数据库,数据格式简单,查询速度快,适合Web应用。首先,下载并放置`QQWry.dat`文件到项目目录。接着,通过编写PHP类解析该文件,实现IP查询功能。最后,提供了一个完整的案例演示,展示如何查询IP地址对应的国家和地区信息。该工具适用于用户地理位置分析、访问日志分析和风控系统等场景,具有轻量级、查询速度快、数据更新方便等优点。
|
10月前
|
PHP 计算机视觉 UED
Buzz库:PHP图像处理中的异步图像下载和保存
Buzz库:PHP图像处理中的异步图像下载和保存
|
11月前
|
SQL 安全 PHP
PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全
本文深入探讨了PHP开发中防止SQL注入的方法,包括使用参数化查询、对用户输入进行过滤和验证、使用安全的框架和库等,旨在帮助开发者有效应对SQL注入这一常见安全威胁,保障应用安全。
521 4
|
11月前
|
数据采集 JavaScript 网络安全
为什么PHP爬虫抓取失败?解析cURL常见错误原因
豆瓣电影评分是电影市场的重要参考,通过网络爬虫技术可以高效采集评分数据,帮助电影制作和发行方优化策略。本文介绍使用PHP cURL库和代理IP技术抓取豆瓣电影评分的方法,解决反爬机制、网络设置和数据解析等问题,提供详细代码示例和优化建议。
425 0
为什么PHP爬虫抓取失败?解析cURL常见错误原因
|
Shell 网络安全 数据安全/隐私保护
suuk-s.php.jpg-python 库劫持
suuk-s.php.jpg-python 库劫持
76 0
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。