apache mod_xsendfile提高php文件下载速度的方法
2015-05-18 15:56
656 查看
说明:
在apache服务器中提供一个文件下载,一般使用一个url指向服务器中的文件即可提供下载。
缺点:不能进行统计,权限检测等操作。
1,一般使用php提供下载,例如:
复制代码代码示例:
<?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,处理中文文件名:
复制代码代码示例:
<?php
$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 apxs2 -cia mod_xsendfile.c
sudo a2enmod xsendfile
sudo /etc/init.d/apache2 restart
apxs2 用于编译apache module,需要安装apache2-dev
2,设置xsendfile打开:
复制代码代码示例:
<Directory>
XSendFile On
</Directory>
3,mod_xsendfile模块的实例代码。
复制代码代码示例:
<?php
/**
* 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);
}
?>
在apache服务器中提供一个文件下载,一般使用一个url指向服务器中的文件即可提供下载。
缺点:不能进行统计,权限检测等操作。
1,一般使用php提供下载,例如:
复制代码代码示例:
<?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,处理中文文件名:
复制代码代码示例:
<?php
$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 apxs2 -cia mod_xsendfile.c
sudo a2enmod xsendfile
sudo /etc/init.d/apache2 restart
apxs2 用于编译apache module,需要安装apache2-dev
2,设置xsendfile打开:
复制代码代码示例:
<Directory>
XSendFile On
</Directory>
3,mod_xsendfile模块的实例代码。
复制代码代码示例:
<?php
/**
* 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);
}
?>
相关文章推荐
- apache mod_xsendfile 让php提供更快的文件下载
- apache mod_xsendfile 让php提供更快的文件下载
- Linux-CentOS XAMPP Apache mod_xsendfile 为php提供更快的文件下载
- 修改下hosts文件,提高百度云管家下载速度的方法!
- php控制文件下载速度的方法
- php调用apache mod_xsendfile 模块实现下载
- ArchLinux pacman 提高俩倍下载速度方法
- 详解PHP操作Memcache缓存技术提高响应速度的方法
- linux中查看nginx、apache、php、mysql配置文件路径的方法
- php实现当前页面点击下载文件的简单方法
- php下载文件超时时间的设置方法
- php实现图片文件与下载文件防盗链的方法
- php实现远程网络文件下载到服务器指定目录(方法一)
- php实现远程网络文件下载到服务器指定目录(方法二)
- PHP提高SESSION响应速度的几种方法
- php下载大文件的方法
- php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
- php 文件下载 出现下载文件内容乱码损坏的解决方法(推荐)
- php简单实现文件或图片强制下载的方法
- php简单实现文件或图片强制下载的方法