位置: 编程技术 - 正文

php使用curl下载指定大小的文件实例代码(php curl_exec)

编辑:rootadmin

推荐整理分享php使用curl下载指定大小的文件实例代码(php curl_exec),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php下载url文件,php curl 下载文件,php curl_setopt,php安装curl扩展,php curl_init,php安装curl扩展,php安装curl扩展,php curl下载,内容如对您有帮助,希望把文章链接给更多的朋友!

php中使用基于libcurl的curl函数,可以对目标url发起http请求并获取返回的响应内容。通常的请求方式类似如下的代码:

上面代码中的这个$response是curl发起的这次http请求从$url获取到的数据,如果没有在$header中通过range来指定要下载的大小,无论这个资源多大,那么都要请求完整的并返回的是这个URI的完整内容。通常只用curl来请求求一些接口或者远程调用一个函数获取数据,,所以这个场景下CURLOPT_TIMEOUT这个参数很重要。

对于curl的使用场景不止访问数据接口,还要对任意的url资源进行检测是否能提供正确的http服务。当用户填入的url是一个资源文件时,例如一个pdf或者ppt之类的,这时候如果网络状况较差的情况下用curl请求较大的资源,将不可避免的出现超时或者耗费更多的网络资源。之前的策略是完全下载(curl会下载存储在内存中),请求完后检查内容大小,当超过目标值就把这个监控的任务暂停。这样事发后限制其实治标不治本,终于客户提出了新的需求,不能停止任务只下载指定大小的文件并返回md5值由客户去校验正确性。

经过了一些尝试,解决了这个问题,记录过程如下文。

1、尝试使用 CURLOPT_MAXFILESIZE。

对php和libcurl的版本有版本要求,完全的事前处理,当发现目标大于设置时,直接返回了超过大小限制的错误而不去下载目标了,不符合要求。

php使用curl下载指定大小的文件实例代码(php curl_exec)

2、使用curl下载过程的回调函数。

参考 ,最终使用了CURLOPT_WRITEFUNCTION参数设置了on_curl_write,该函数将会1s中被回调1次。

最终我的实现片段:

DownloadSizeRecorder是一个单例模式的类,curl下载时记录大小,实现返回下载内容的md5等。

curl请求的代码实例中,实现限制下载大小

到这里,踩了一个坑。增加了on_curl_write后,$response会返回true,导致后面取返回内容的时候异常。好在已经实时限制了下载的大小,用downloadData来记录了已经下载的内容,直接可以使用。

总结

以上所述是小编给大家介绍的php使用curl下载指定大小的文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!

Laravel 5.5官方推荐的Nginx配置学习教程 前言本文主要给大家介绍了关于Laravel5.5官方推荐的Nginx配置的想内容,分享出来供大家参考学习,下面话不多说,来一起看看详细的介绍把。Laravel5.5版

PHP小白必须要知道的php基础知识(超实用) 很多人看到PHP就以为是程序员,就以为钱很多(虽然是事实),但是也要考虑下自己是不是适合这一行,知道PHP是什么吗?PHP都有什么样的功能,都能

Laravel中的Blade模板引擎示例详解 前言本文主要给大家介绍了关于Laravel中Blade模板引擎的相关内容,分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧。Blade模板引擎Blade

标签: php curl_exec

本文链接地址:https://www.jiuchutong.com/biancheng/288261.html 转载请保留说明!

上一篇:ThinkPHP3.1.x修改成功与失败跳转页面的方法(thinkphp config)

下一篇:Laravel 5.5官方推荐的Nginx配置学习教程

  • 怎么计提坏账准备到本年利润
  • 委托加工物资的成本包括哪些内容
  • 设计印刷合同
  • 旅游交什么税
  • 实收资本多长时间缴纳完?
  • 小规模普票冲红原票要退回吗
  • 什么是外购类标签
  • 电子申报率较差的原因
  • 农产品为什么价格低
  • 交易性金融资产的入账价值
  • 预借差旅费凭证填写
  • 财产理赔收入怎么做账
  • 做税审报告费如何做分录?
  • 直接减免的增值税属于财政性资金吗
  • 网站服务器使用什么IP地址
  • 国税一个月没报税罚款多少
  • 出口退税代理费用大概多少
  • 发票的金额可以答应客户多开
  • 政府机关税号是1开头的吗
  • 红字发票通知单已经上传可以作废吗
  • 一张记账凭证写不下时,附件怎么写
  • 小规模季度30万免税怎么做账
  • 能够影响现金流的因素有
  • 公户以借款形式打款给个人,对个人有影响么?
  • 在建工程一次还是多次
  • 增值税小规模纳税人免征增值税政策
  • 如何取消开始菜单的程序
  • 股息红利需要缴纳个税吗
  • 非上市公众公司收购办法
  • 增值税价外费用怎么算
  • 商业银行贷款的三种基本形式
  • php简单么
  • php获取get
  • 一键部署web应用
  • 计算机视觉:一种现代方法
  • php实现简单论坛
  • 承租人经营租赁账务处理
  • 哪些税金不需要通过应交税费科目核算
  • 如何测试php
  • python第三方库安装教程
  • 没有收入该怎么办
  • 科技公司技术服务费税率
  • 退回股东投资款现金流怎么选
  • 应纳税所得额是利润总额还是净利润
  • mysql如何调优
  • 应付账款多好还是少好
  • 进项税有余额在报表如何反应
  • 建安企业用什么会计制度
  • 用现金购买股票分录
  • 业务招待费如何扣除
  • 利润分配的账务处理实验报告
  • 施工审图费计入什么科目
  • 自产产品对外捐赠确认收入吗
  • 应收应付核销的会计科目
  • 工商联络注册
  • mysql5.5解压版安装教程
  • 卡巴斯基 试用
  • Windows Server AD 访问数量控制配置方法
  • 不能在windows7里进行设置的网络位置是
  • win7链接联机id
  • xp系统如何禁止各种窗口弹出
  • mac显示器颜色不一致
  • linux网络管理及应用
  • windows8.1升级win10
  • win7卸载软件时显示program
  • 电脑自带win8是装win7还是win10
  • Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
  • Python分析学校四六级过关情况
  • vuerouter嵌套路由
  • bash scp command not found的解决方法
  • python中的字典与列表属于什么类型
  • unity网格地形
  • jQuery ajax时间差导致的变量赋值问题分析
  • shell脚本配置环境
  • python常用操作运算符
  • Javascript Object.extend
  • 怎么知道税控盘有没有注销
  • 如何办理股权转让信息登记表
  • 地税和国税是什么关系
  • 财税[2020]25号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设