mod文件 php,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 apxs2 -cia mod_xsendfile.c

sudo a2enmod xsendfile

sudo /etc/init.d/apache2 restart

apxs2 用于编译apache module,需要安装apache2-dev

2,设置xsendfile打开:

复制代码代码示例:

XSendFile On

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);

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值