apache mod_xsendfile提高php文件下载速度的方法
说明:
在apache服务器中提供一个文件下载,一般使用一个url指向服务器中的文件即可提供下载。
缺点:不能进行统计,权限检测等操作。
1,一般使用php提供下载,例如:
$file = 'test.zip';
if(file_exists($file)){
header('content-type:application/octet-stream');
header('content-disposition:attachment; filename='.basename($file));
header('content-length:'.filesize($file));
readfile($file);
}
?>
2,处理中文文件名:
$file = 'test.zip';
$filename = '中文.zip';
if(file_exists($file)){
$user_agent = $_SERVER['Http_User_agent'];
$encode_filename = rawurlencode($filename);
if(preg_match("/MSIE/", $user_agent)){
header('content-disposition:attachment; filename="'.$encode_filename.'"');
}else if(preg_match("/Firefox/", $user_agent)){
header("content-disposition:attachment; filename*=\"utf8''".$filename.'"');
}else{
header('content-disposition:attachment; filename="'.$filename.'"');
}
readfile($file);
}
?>
使用php readfile,需要经过php这层。
如果可以直接通过apache将文件发送给用户,不经过php这层,将会提高下载速度。
那么就需要用到本文的主角了,它就是apache mod_xsendfile模块,下载地址:mod_xsendfile(https://tn123.org/mod_xsendfile/),让apache直接将文件发给用户
1,安装mod_xsendfile模块:
sudo a2enmod xsendfile
sudo /etc/init.d/apache2 restart
apxs2 用于编译apache module,需要安装apache2-dev
2,设置xsendfile打开:
XSendFile On
</Directory>
3,mod_xsendfile模块的实例代码。
/**
* mod_xsendfile模块 加速文件下载
* edit: www.jbxue.com
*/
$file = 'test.zip';
$filename = '中文.zip';
if(file_exists($file)){
$user_agent = $_SERVER['Http_User_agent'];
$encode_filename = rawurlencode($filename);
if(preg_match("/MSIE/", $user_agent)){
header('content-disposition:attachment; filename="'.$encode_filename.'"');
}else if(preg_match("/Firefox/", $user_agent)){
header("content-disposition:attachment; filename*=\"utf8''".$filename.'"');
}else{
header('content-disposition:attachment; filename="'.$filename.'"');
}
header('X-Sendfile:'.$file);
}
?>
转载于:https://www.cnblogs.com/yepanpan/p/4512137.html
apache mod_xsendfile提高php文件下载速度的方法相关推荐
- 提高CSS文件可维护性的五种方法
当完成一项前端的工作之后,许多人都会忘记该项目的结构与细节.然而代码并不是马上就能完全定型,在余下的时间里还有不断的维护工作,而这些工作也许不会是你自己完成.所以,结构优良的代码能很大程度上优化它的可 ...
- linux apache 大文件,Apache下error.log文件太大的处理方法
Apache下error.log文件太大的处理方法 2019年05月03日 | 萬仟网网络运营 | 我要评论 清除error.log.access.log并限制apache日志文件大小的方法 有个客户 ...
- java动态加载jar文件并执行方法
在项目开发的过程中,有时候需要动态灵活的加载某个jar包并执行里面的方法的时候,我们可以使用本篇文章写得方式去动态的加载jar包而不用使用原始方式引入jar包作为lib去使用,接下来介绍如何动态加载j ...
- Docker--提高下载速度的方法
原文网址:Docker--提高下载速度的方法_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何提高Docker的下载速度. docker默认连接的国外官方镜像,国内进行docker pull ...
- ubuntu 12.04 提高更新网速的方法
ubuntu 12.04 提高更新网速的方法 ubuntu用户经常会在终端下使用sudo apt-get update对软件源进行更新,但从默认的下载服务器下载速度只有不及正常网速的1/5.下面介绍更 ...
- Apache伪静态(Rewrite).htaccess文件详解以及RewriteCond 规则
Htaccess(超文本访问)是一个简单的配置文件,它允许设计师,开发者和程序员通过它来改变Apache Web服务器的配置. 这些功能包括用户重定向.URL重写(url rewrite,国内很多称为 ...
- 文件批量下载方法 文件批量下载工具
软件版本:Internet Download Manager 在当今数字化时代,我们日常使用电脑进行各种工作和娱乐活动.有时候,我们需要从互联网上下载大量文件,例如电影.音乐.文档等.在这种情况下,手 ...
- windows下apache配置虚拟主机的两个方法
windows下apache配置虚拟主机方法一: 对httpd.conf进行设置: 1.注释以下三行 #ServerAdmin #ServerName #DocumentRoot 2.去掉mod_pr ...
- linux大文件拷贝,Linux如何提高大文件的拷贝效率
Linux系统操作中,当你在进行机器直接的拷贝时,遇到大文件的时候非常浪费时间,特别是将文件同时拷贝到多台机器上的时候,那么有什么好的方法能够提高大文件的拷贝效率呢?一起来学习下吧. 你可以从源机器逐 ...
最新文章
- android系统短信库的一些用法
- 深入讨论PHP5对象复制技术
- 用户金字塔模型详解及在实际运营工作中的意义
- Java第八天听课总结--jar 包的使用(1)
- mysql填写账户远程_如何开启MySQL的远程帐号
- python 文件指针及文件覆盖
- 绑定方法与非绑定方法
- python深拷贝_python 深拷贝与浅拷贝的区别
- 学习:java原理—反射机制
- redis命令执行流程分析
- android 9宫格输入法,Android/WP原生九宫格输入法对比_诺基亚 Lumia 925_手机iOS频道-中关村在线...
- 通过IP获取相应所在地的地址
- 素数生成器的算法【PHP EDITION】
- TSAP(1) : DateTimes
- 服务器连交换机配置lacp协议,LACP(链路聚合控制协议)
- 线程的学习,和线程的相关概念及多线程的学习指引
- memcached的安装
- 前端页面性能优化的几种方式(强烈推荐)
- 装修主要的污染源有哪些?
- 设置日语输入法遇到的各种问题
热门文章
- 【ZOJ - 2724】【HDU - 1509】Windows Message Queue(优先队列)
- 图解算法学习笔记(八):贪婪算法
- 修改DNS的Linux脚本,Shell脚本-配置网络
- linux中创建目录树,如何在C++/Linux中创建目录树?
- 武汉超级计算机中心,加快打造“五个中心” 武汉率先开建人工智能计算中心...
- java dfs_Java数据结构与算法 深搜(DFS)的简单使用(一)之排列组合
- edtext 从右边开始输入 安卓_转换iOS和安卓的视频至任何格式
- android fragment动画,Fragment 的过场动画
- 为什么叫日上_古雷150万吨乙烯,为啥叫芒果项目?
- 剑指offer:22-25记录