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

RewriteEngine オン

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($クエリ);

失敗したようですが、エラーが発生してダウンロードが開始されたことを確認するには遅すぎます。

また、DB で何もしていないので、次の行を移動します。

include("closedb.php");

ヘッダーの上。この方法は常に安全です

于 2012-12-18T23:01:44.330 に答える