位置: 编程技术 - 正文

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

  • 买车库需要交税吗
  • 车险车船税会计分录
  • 生育津贴是否需要纳税
  • 结转已销商品的成本的会计科目有哪些
  • 会计凭证辅助项
  • 预缴增值税是否适用一般计税方法
  • 厂房怎么计提折旧费
  • 房屋所有权变更登记证书
  • 补交关税增值税怎么做分录?
  • 国家知识产权局商标注册
  • 代开的专用发票附加税该怎么申报?
  • 被吊销营业执照的公司如何注销
  • 境外所得税收抵免政策
  • 长期待摊费用账户按用途和结构分类应属于
  • 红字发票如果开多了下个月能进行抵扣么?
  • 如何关闭win10自带杀毒软件
  • 城建税的会计分录是什么
  • 计提生产设备折旧费计入什么科目
  • 公司章程认缴时效是多久
  • 劳务分包费用组成比例
  • 进项加计扣除如何做分录
  • elementui常用组件
  • PHP:mb_http_input()的用法_mbstring函数
  • 用php做计算
  • php零基础教程
  • php生成zip压缩包
  • 为什么会产生应收账款
  • 暂估入账的固定资产可以计提折旧吗
  • 生产企业外销收入账务处理
  • 阿根廷圣克鲁斯省
  • vuedraggable官方文档
  • 炫酷登录注册教程
  • 支票的提示付款期限为自出票日期
  • 金融企业的代理业务
  • 确认应付职工薪酬如何计算
  • 失业保险金退回告知书
  • 织梦百科
  • 珠宝首饰可以开发票吗
  • 购进货物用于建筑安装
  • 企业预提的费用计入什么科目
  • 单位食堂不对外营业需不需要办理经营许可证
  • 机关单位工会经费的来源
  • 车辆购置税滞纳金上限
  • 业务招待费扣除标准2023
  • 财政补助收入属于资产类还是负债类
  • 手工账本应付账款怎么做
  • 收到微信公众号反诈骗风险提示
  • 购进货物未取得增值税专用发票可以抵扣进项税额吗
  • 微信支付属不属于电子商务
  • 实缴资本和注册资本的比例
  • 持有至到期投资改名为
  • 对于事业单位无力支付的银行承兑汇票
  • 总分类账与明细分类账的关系
  • 公司法人可以变更给老人吗
  • 注册公司可以代办吗法人需要到场吗?
  • 生产成本和主营业务收入的关系
  • 建筑企业人工费计入什么科目
  • Win7怎么把桌面文件迁移到D盘中
  • WIN+VMWARE6.5上面网络配置centOs(5.4版) ADSL接入的小结
  • win单击变双击
  • 如何查看win7系统
  • node.js安装后自带哪个工具
  • node分页接口
  • nodejs入门教程
  • 建立批处理命令
  • node.js入门教程
  • crontab每秒执行一次命令
  • js校验密码复杂度
  • js获取鼠标坐标到浏览器底部
  • css弹性布局是什么
  • js的iframe
  • 使用jquery操作dom
  • 同源策略详解
  • python toga
  • 电子税务推广工作内容
  • 土地增值税网上申报流程
  • 社保在线审核
  • 土地 荒
  • 税务年报怎么操作
  • 企业代收行政事业性收费
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设