博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP下使用curl问题小结
阅读量:6844 次
发布时间:2019-06-26

本文共 938 字,大约阅读时间需要 3 分钟。

hot3.png

问题一:超时设置

当将curl的超时时间误设置成很成的数值时(如1402919699,单位为秒),CURL应该将会过滤此值,而改将超时设置成0秒。最终导致一旦发生请求执行,就会引发超时错误Connection time-out。通过curl_getinfo($ch, CURLINFO_CONNECT_TIME),可以看到对应连接消耗时间为0。

错误示例代码:

$ch = curl_init();//其他操作。。。//$maxTime 来自外部输入,超过一定阀值时会引发异常curl_setopt($ch, CURLOPT_TIMEOUT, $maxTime);curl_exec($ch);

解决方案:

应该对超时值进行控制判断。

$maxTime = ($maxTime > 0 && $maxTime < MAX_TIMEOUT) ? $maxTime : DFAULT_TIMEOUT;

问题二:CURLE_PARTIAL_FILE 错误 (18)

此类错误会提示:transfer closed with *** bytes remaining to read

主要在于设置了POST标志,却没有传递相应的参数,导致文件传输的尺寸不一致。

错误示例代码:

$ch = curl_init();//其他操作。。。//$data由外部传入,为空时会引发异常,如array()curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);curl_exec($ch);

解决方案:

if (!empty($data)) {    curl_setopt($ch, CURLOPT_POST, true);    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);}

开发建议:

1、不要绝对相信和依赖第三方框架或者SDK

2、在使用扩展、第三方或者底层类库时,须明确每个调用会引发的问题,以及预防处理的方案

3、坚持单元测试,及早发现问题

转载于:https://my.oschina.net/dogstar/blog/280322

你可能感兴趣的文章
再谈大型数据中心的运维工作
查看>>
报告显示电话监控技术处于发展浪潮
查看>>
安全研究人员发现可以利用推特控制僵尸网络
查看>>
三种在Linux上创建或扩展交换分区的简单方法
查看>>
LMD Tool:Linux恶意软件检测工具
查看>>
铜缆宽带接入即将走向末路?
查看>>
哪些技术对5G贡献最大?毫米波成工程师追捧之一
查看>>
企业级SaaS服务的现实之路:放弃团队 直指公司
查看>>
你应该成为 Web 开发者的 5 大理由
查看>>
Locky勒索软件是如何利用DGA的?
查看>>
打造自己的 Python 编码环境
查看>>
使用Azure托管磁盘简化云存储管理
查看>>
你需要知道知道这几个因素会不利于关键词排名优化
查看>>
《Cocos2D权威指南》——1.5 在设备上运行HelloCocos2D项目
查看>>
东莞市政府常务会议审议通过《东莞市大数据发展实施方案》
查看>>
AI 对冲基金创造新货币,要将华尔街“开源”
查看>>
中国不允许信息数据随意离境,或影响跨国公司
查看>>
如何消除视频监控出现的干扰?
查看>>
东芝发布OCZ TL100系列入门级SATA SSD新品:接棒TR150
查看>>
解决IT流程自动化的Brocade Workflow Composer长什么样?
查看>>