apache mod_xsendfile 让php提供更快的文件下载
来源:互联网 发布:三体x.观想之宙 知乎 编辑:程序博客网 时间:2024/04/29 06:21
服务器提供一个文件下载,一般使用一个url指向服务器中的文件即可提供下载。
但这样就不能进行统计,权限检测等操作。
因此,一般使用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);}?>处理中文文件名:
<?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,让apache直接将文件发给用户
安装:
sudo apxs2 -cia mod_xsendfile.csudo a2enmod xsendfilesudo /etc/init.d/apache2 restartapxs2 用于编译apache module,需要安装apache2-dev
设置xsendfile打开:
<Directory>XSendFile On</Directory>代码如下:
<?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.'"');}header('X-Sendfile:'.$file);}?>
- apache mod_xsendfile 让php提供更快的文件下载
- Linux-CentOS XAMPP Apache mod_xsendfile 为php提供更快的文件下载
- 让 PHP 更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- 让PHP更快的提供文件下载
- PHP更快的提供文件下载
- 如何让php更快的提供下载
- 出现WARNING:EES turn off. Please turn on EES and try again和linux10.4修改ip地址
- 二维数组参数传递
- Cocos2d-X游戏开发之3D晃动特效参数详解
- jQuery基础教程第四章学习
- HDU1247Hat’s Words--Trie
- apache mod_xsendfile 让php提供更快的文件下载
- udev -- howto
- 意大利语99句
- javascript禁用键盘功能键及其他键的实现方法
- POJ3169 Layout , 最短路算法解差分约束问题
- Hadoop之父Doug Cutting
- POJ 3414 Pots ( BFS , 打印路径 )
- HDU1075(What are you talking about)--Trie树练习
- proc/c++(三)