1

ここで奇妙な問題があります。同じダウンロード スクリプトで複数のファイルをダウンロードしようとすると (php.net で見つかった 5 つの異なるスクリプトを試しました)、最初のファイルはうまくいきますが、2 番目のファイルは約 60 秒の遅延があります。依頼時から。最初のダウンロードをキャンセルすると、2 番目のダウンロードが突然開始されます。Apache からのファイルの直接ダウンロードをテストしましたが、すべて問題ありません。これは私が試した最後のスクリプトです:

<?php
$filename= $_GET['file'];

header("Content-Length: " . filesize($filename));
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename=writeToFile.zip');

$file_contents = file_get_contents($filename);
print($file_contents);
?>
4

3 に答える 3

2

基盤となる Web サーバーに、同じ IP からの同時接続に制限がある可能性がありますか? 同時に 2 つの異なる IP から試すことはできますか?

于 2009-11-26T14:33:19.937 に答える
1

いいえ、いいえ... 問題は別の場所にあります

セッションを(手動または自動で)開始し、セッションは通常ファイルに保存されます...

したがって、最初のスクリプトを開いてからセッションを開いてファイルをロックすると、他のリクエストはセッションファイルのロックを解除するのを待つ必要があります...

既存の 2 つのソリューション... - セッションの保存にセルフ クラスを使用します ... ファイル セッションをロックせずに (バグ スクリプトがセッション データを上書きする可能性があります) - または file_get_content 呼び出しの前に session_write_close();

于 2010-07-19T10:11:36.760 に答える
0

readfile($filename)代わりに 試してみてください内容を文字列に保存しないため、メモリを消費しませ$file_contents = file_get_contents($filename);print($file_contents);ん。readfile()file_get_contents()

@Pekka Gaiser には、同時接続について良い点があります。また、PHP が使用しているメモリ制限の種類も確認してください。

于 2009-11-26T14:40:22.497 に答える