0

好的,首先感谢您抽出宝贵的时间,我希望我能为这个问题多加一点。

问题:我的网站上有一些音乐文件 (.mp3),我正在使用 php 文件来增加数据库以计算下载次数并指向要下载的文件。出于某种原因,此方法从 350kb/s 开始,然后慢慢下降到 5kb/s,然后文件说需要 11 小时才能完成。但是,如果我直接转到 .mp3 文件,我的浏览器会打开一个播放器,然后我可以右键单击并“另存为”,这样可以在 3 分钟内完成下载。(对于那些认为它是我的连接或 ISP 而它也不是我的服务器的人来说,是的。)

所以我最近一直在玩的唯一的东西是 php.ini 和 .htcaccess 文件。

所以不用多说,php 文件 php.ini 和 .htcaccess:

下载.php

<?php

include("config.php");
include("opendb.php");

$filename = 'song_name';
$filedl = $filename . '.mp3';      

$query = "UPDATE songs SET song_download=song_download+1 WHERE song_linkname='$filename'";          
mysql_query($query);

header('Content-Disposition: attachment; filename='.basename($filedl));
header('Content-type: audio/mp3');
header('Content-Length: ' . filesize($filedl));
readfile('/music/' . $filename . '/' . $filedl);

include("closedb.php");
?>

php.ini

register_globals = off
allow_url_fopen = off

expose_php = Off
max_input_time = 60
variables_order = "EGPCS"
extension_dir = ./
upload_tmp_dir = /tmp
precision = 12
SMTP = relay-hosting.secureserver.net
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="


; Defines the default timezone used by the date functions
date.timezone = "America/Los_Angeles"

.htaccess

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} !^(www.MindCollar.com)?$ [NC]
RewriteRule (.*) http://www.MindCollar.com/$1 [R=301,L]

<IfModule mod_rewrite.c>
RewriteEngine On
ErrorDocument 404 /errors/404.php
ErrorDocument 403 /errors/403.php
ErrorDocument 500 /errors/500.php
</IfModule>

Options -Indexes
Options +FollowSymlinks

<Files .htaccess>
deny from all
</Files>

谢谢你的时间

4

3 回答 3

0

如果你更新你的数据库,然后重定向用户

header('Location: path_to_MP3'); 
于 2012-12-18T22:59:44.240 回答
0

重写引擎开启

RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^(.*)$ index.php?page=$1&%{QUERY_STRING}&param=%{REQUEST_URI} 

使用这个 .htaccess 代码

于 2013-06-21T09:05:35.337 回答
0

你有一个语法错误:

$query = "UPDATE songs SET song_download=song_download+1 WHER song_linkname='$filename'";          

mysql_query($查询);

应该

$query = "UPDATE songs SET song_download=song_download+1 WHERE song_linkname='$filename'";          

mysql_query($查询);

显然如果失败,但你看到错误已经发生并开始下载为时已晚。

此外,由于您不再对数据库执行任何操作,请移动此行:

include("closedb.php");

在标题之上。这样总是更安全

于 2012-12-18T23:01:44.330 回答