位置: 编程技术 - 正文

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配置学习教程

  • 成本利润率和销售利润率哪个大
  • 建筑业固定资产折旧费用科目是什么
  • 销售二手车需要什么资质
  • 税务专家田野
  • 增值税的附加税有几个
  • 种植茶叶企业所得税怎么征收
  • 招聘预算费用包括哪些预算清单
  • 购销合同需要盖合同章吗
  • 建筑企业开票都开什么
  • 苗木种植发票免增值税吗
  • 金税盘备份文件名
  • 公司入股资金有发票吗
  • 旧设备换新设备文案
  • 已经认证的发票红冲发票需要收回原发票吗
  • 会务费账务处理
  • 用友怎么结转本期损益
  • 公司年底奖金怎么算
  • 公司组织员工旅游,起到的目的是什么
  • 冲减留抵税会计分录
  • 快递费税率是6还是9
  • 农产品增值税免税
  • 在建工程预转固后又有工程款
  • 成交转化率的计算公式电脑
  • 工会固定资金是什么
  • 1697511149
  • won11检测
  • 赠与合同公证收费标准
  • 印花税的计税依据是含税还是不含税
  • 建筑企业如何预缴企业所得税
  • 生育津贴申请表打印
  • php数组函数实现机选双色球
  • php截取网页指定内容
  • 合同已无法履行
  • 支付以前年度增值税怎么做账
  • PHP:stream_context_create()的用法_Stream函数
  • win7安装包下载
  • 停车缴费怎么交
  • 免税和免征增值税是一个意思么
  • 法定盈余公积金达到注册资本的多少时不再提取
  • 增值税抄税报税流程
  • 查看ntpdate状态
  • 违约赔偿金要交税吗
  • 企业职工薪酬如何确定
  • 公司注册实收资本能为0嘛
  • php引用类型
  • 汽车报废残值如何处理
  • 企业返聘退休人员需要交社保吗
  • 本年利润必须转入利润分配吗
  • 库存现金错账怎么调整
  • 高新技术企业亏损弥补的年限为十年
  • 投资出去的钱如何入账
  • 原材料采购未入库会计分录
  • 个体工商户对公账户需要交税吗
  • 月末库存商品的成本怎么算
  • 一次性压缩洗脸巾
  • linux怎么统计文件中出现字符串的数量
  • winxp关机立马自动重启
  • window终端是什么
  • linux 主力机
  • 联想lenovo thinkpad c13 yoga
  • windows7包含6个版本其中什么最强大支持的功能最多
  • linux的命令行界面
  • windows定位
  • Unity3D游戏开发(第2版)
  • cocos2dx4.0教程
  • js怎么输出文字
  • jquery滚动到底部加载数据
  • node优秀库
  • javascript的dom
  • unity加密代码
  • js使用类
  • android应用程序包下载安装
  • 广东省电子税务局app下载手机版
  • 企业季度申报怎么报
  • 发票怎样读入金税开票系统
  • 德勤 税务
  • 北京税务师取消了吗
  • 德阳契税2021年新规
  • 手机微信怎么预约
  • 土地增值税逾期罚款
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设