封装一个PHP可控限速下载文件的方法

说明

  1. 实测下载后的文件与源文件哈希值一致,保证数据传输安全一致。
  2. 如果下载到的文件每次都165KB左右,和源文件大小不符合,需要用IDE打开下载的文件,看看是否报致命错误,提示超过最大内存限制。这个与php.ini中的“memory_limit”参数配置有关,所以方法的$kilobyte参数不要设置过大。
  3. 如果实际下载速率低于代码中配置的速率,需要考虑是云服务器带宽或者其中某个网络链路的问题。
  4. 由于添加了下载响应头的缘故,所以遇到任何文件都会强制下载。

代码

/*** @function 自定义文件下载速度* @param    $file_path string 文件路径* @param    $kilobyte  int    每秒发送多少千字节数据(有波动)* @param    $file_name string 文件名,无需后缀,自定义下载的初始文件名* @return   void* @other    并未判断文件是否存在的逻辑,所以请前置逻辑判断。*/
function speedLimitedDownload($file_path, $kilobyte = 1024, $file_name = '') {$file_info = pathinfo($file_path);header('Content-Disposition:attachment; filename="'. ($file_name ? $file_name . '.' . $file_info['extension'] : $file_info['basename']) . '"');header('Content-Type:"' . mime_content_type($file_path) . '"');header('Content-Length:' . filesize($file_path));//使用二进制和只读方式打开文件资源$handle = fopen($file_path, 'rb');//判断文件指针是否到了文件末尾while (! feof($handle)) {// 输出数据到客户端echo fread($handle, $kilobyte * 1024);//刷新缓冲区,使其直接输出到客户端flush();//此处意思是设置每秒输出多少个字节的数据。sleep(1);}fclose($handle);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/118545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 深度清除镜像缓存 (overlay2)

Docker 深度清除镜像缓存 (overlay2) 一般情况下,运维清理镜像是通过命令 docker rm i 删除镜像的。但是这条命令不会删除docker build命令产生的缓存文件。 这个时候需要使用 docker system 的系列命令来做相关处理。 docker system --hel…

selenium4 元素定位

selenium4 9种元素定位 ID driver.find_element(By.ID,"kw")NAME driver.find_element(By.NAME,"tj_settingicon")CLASS_NAME driver.find_element(By.CLASS_NAME,"ipt_rec")TAG_NAME driver.find_element(By.TAG_NAME,"area")LINK_T…

python time 模块

时间的三种格式time模块中的其他函数时间三种格式之间的转化 一,时间的三种模块 在python中对于时间的描述存在三种格式:1,时间戳,2,时间结构体 3,按某种格式形式展示的字符串 1,时间戳 import time pr…

cola架构:有限状态机(FSM)源码分析

目录 0. cola状态机简述 1.cola状态机使用实例 2.cola状态机源码解析 2.1 语义模型源码 2.1.1 Condition和Action接口 2.1.2 State 2.1.3 Transition接口 2.1.4 StateMachine接口 2.2 Builder模式 2.2.1 StateMachine Builder模式 2.2.2 ExternalTransitionBuilder-…

Laplacian算子详解及例程

Laplacian算子是一种常用的边缘检测算法,它是通过对图像进行二阶微分来检测图像的边缘。Laplacian算子的优点是能够对不同方向的边缘进行检测,对于边缘的粗细和强度变化也比较敏感。 Laplacian算子的计算公式为: ∇f ∂f/∂x ∂f/∂y其中…

AUTOSAR汽车电子嵌入式编程精讲300篇-基于CAN总线的温度场测量装置的研究与设计

目录 前言 国内外研究现状 2 温度场测量装置的方案设计 2.1 技术指标

热搜榜:最热门的话题文本排行榜API接口

近年来,随着社交媒体的兴起,热门话题的数量和更新速度都在不断增加,因此热门话题排行榜的需求也越来越大。在这篇文章中,我们将探讨如何使用#热搜榜# API接口获取最热门的话题文本排行榜,并给出相关代码示例。 一、API…

Centos7 Linux系统下生成https的crt和key证书

linux下生成https的crt和key证书 步骤如下: x509证书一般会用到三类文,key,csr,crt Key 是私用密钥openssl格,通常是rsa算法。 Csr 是证书请求文件,用于申请证书。在制作csr文件的时,必须使…

电脑QQ如何录制视频文件?

听说QQ可以录制视频,还很方便,请问该如何录制呢?是需要先打开QQ才可以录制吗?还是可以直接使用快捷键进行录制呢?录制的质量又如何呢? 不要着急,既然都打开这篇文章看了,那小编今天…

苹果IOS安装IPA, plist形式 Safari 浏览器点击安装

快速链接 苹果开发者账号链接 网址: https://developer.apple.com/account 苹果应用上架链接 网址: https://appstoreconnect.apple.com/ 应用证书文件及打包 参考教程: 最新uniapp打包IOS详细步骤(2022) 证书在线制作工具 网址: https://app.121xuexi.…

【Javascript】通过浏览器书签构建与执行自动刷新脚本

0x00 前言 日常工作中,经常遇到需要时不时点一下刷新这样的事情(怪前端想不到写一个自动刷新) 但是…… 没有自动刷新按钮,在这页面手动点刷新还是太浪费时间了。 有时候懒得等了去做别的事情,过一小时回来刷新一下&a…

OpenText 安全取证软件——降低成本和风险的同时,简化电子取证流程

OpenText 安全取证软件,行业标准的数字调查解决方案,适用于各种规模和各种行业的组织 降低成本和复杂性 • 远程调查比轮流调查过程更有效 对结果持有信心 • 磁盘级可见性可以完成相关端点数据的搜索和收集 谨慎调查 • 完整的网络调查&#xf…

【Python机器学习】零基础掌握VotingRegressor集成学习

如何更准确地预测房价? 想象一下,你是一名房地产分析师,你的任务是预测一个小区的未来房价。这看似简单,但实际上,房价受到多种因素的影响,如地理位置、房屋面积、周围设施等。你可能会使用线性回归模型来进行预测,但是你会发现,尽管模型的准确性还可以,但还是存在一…

NPM-安装报错connect ETIMEDOUT

报错信息request to https://registry.npm.taobao.org/yarn failed, reason: connect ETIMEDOUT 解决方案: 1、npm set strict-ssl false 2、设置代理 npm config set proxy http://xxx:xxxopenproxy.ali.com:8080npm如何在安装的时候指定源 npm install -g yarn1.…

【Java集合类面试二十七】、谈谈CopyOnWriteArrayList的原理

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:谈谈CopyOnWriteArrayLi…

安科瑞电能计量管理系统

安科瑞 崔丽洁 随着国家电网改革政策的逐步推进和落实,Acrel-3000WEB电能管理解决方案运用互联网和大数据技术,为电力运维公司提供电能管理解决方案。该平台作为连接运维单位和用电企业的纽带,全方面监视用户配电系统的运行状态和电量数据&am…

代码随想录 | Day7

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 今日学习目标一、算法题1.四数相加 II2.赎金信3.三数之和4.四数之和 学习及参考书籍 今日学习目标 四数相加 II(454) 赎金信(38…

计算机毕设 opencv 图像识别 指纹识别 - python

文章目录 0 前言1 课题背景2 效果展示3 具体实现3.1 图像对比过滤3.2 图像二值化3.3 图像侵蚀细化3.4 图像增强3.5 特征点检测 4 OpenCV5 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往…

MySQL——EXPLAIN用法详解

EXPLAIN是MySQL官方提供的sql分析的工具之一,可以用于模拟优化器执行sql查询语句,从而知道MySQL是如何处理sql语句。EXPLAIN主要用于分析查询语句或表结构的性能瓶颈。 以下是基于MySQL5.7.19版本进行分析的,不同版本之间略有差异。 1、EXP…

筹备三年,自动驾驶L3标准将至,智驾产业链的关键一跃

‍作者|张祥威 编辑|德新 多位知情人士告诉HiEV,智能网联汽车准入试点通知,乐观预计将在一个月内发布。试点的推动,意味着国家层面的自动驾驶L3标准随之到来。 「L3标准内容大部分与主机厂相关,由工信部牵头,找了几家…