ホームページ > バックエンド開発 > PHPチュートリアル > アップロードに関する問題。小さいファイルは正常にアップロードされますが、100M を超えるファイルはアップロードされます。進行状況バーが 100M を超えると、コードのどこかに関連する問題が発生します。

アップロードに関する問題。小さいファイルは正常にアップロードされますが、100M を超えるファイルはアップロードされます。進行状況バーが 100M を超えると、コードのどこかに関連する問題が発生します。

WBOY
リリース: 2016-06-13 13:00:29
オリジナル
971 人が閲覧しました

ダウンロードの問題。小さいファイルは正常にダウンロードされますが、100M を超えるファイルをダウンロードすると、100M を超えると進行状況バーの動きが停止します。コードの何が問題ですか?

この投稿は bxline によって最終編集されました: 2012-12-17 06:31:43 次のコードを使用しました。2 回試しましたが、ダウンロードが 145M に達すると実行が停止し、129M に達すると実行が停止しました。
、 どうしたの?小さいファイルは正常にダウンロードされますが、100M を超えるファイルは正しくダウンロードされません
以下はコードです: 私は Apache ではなく 03+FASTCGI なので、コード内のいくつかの行がコメントアウトされています

if(file_exists($filename)){
$mtime = ($mtime = filemtime($filename)) $mtime : gmtime(); $size = intval(sprintf("%u", filesize($filename))); #if (intval($size + 1) > return_bytes(ini_get('memory_limit')) && intval($size * 1.5) # ini_set('memory_limit', intval($size * 1.5)); #}
//@apache_setenv('no-gzip', 1); //@ini_set('zlib.output_compression', 0);
header('Content-Description: ファイル転送');
header('Content-Type: application/force-download');
Header('Content-Type: application/octet-stream');
Header('Content-Disposition:attachment; filename='.basename($filename));
Header('コンテンツ転送エンコーディング: バイナリ');
Header('有効期限: 0');
Header('キャッシュ制御: 必須再検証、事後チェック=0、事前チェック=0');
header('Pragma: public');
header("Content-Length: " . $size); set_time_limit(300); $chunksize = 1 * (1024 * 1024);
// ob_clean();
//flush();
if ($size > $chunksize) {
$handle = fopen($filename, 'rb'); $buffer = ''; while (!feof($handle)) {
$buffer = fread($handle, $chunksize); エコー $バッファ
Ob_flush(); フラッシュ(); }
fclose($handle); } else {
ob_flush(); フラッシュ(); Readfile($ファイル名); }
終了;
}

------解決策---------

echo 100 * 1024 / 300;
341 K/秒を獲得しました
つまり、平均帯域幅は 3M 以上である必要があります

ダウンロード コードには、送信エラーが発生するとダウンロードを再開する機能がありません。

-----解決策-------------- -- ----

書いてみようかな、見てみてね

関数ダウン($file){
IF(!$file または !File_Exists($file) または !Is_Readable($file)) {Return False;}
IF($f = atr($file)) { Header("Content-Length:{$f['size']}");
Header('Content-Description:ファイル転送');
Header('Content-Transfer-Encoding:binary');
Header('有効期限:0');
Header('Cache-Control:must-revalidate');
Header('Pragma:public');
IF(Function_exists("mime_content_type")) { Header("Content-Type: ".mime_content_type($f['name']));
}その他{
Header("Content-Type: application/octet-stream");<br><br>
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート