0

小さなダウンロード ポータルを作成し、application/octet-stream を使用してファイルをダウンロードしました。

function fu($filename)
{
     header("Content-Type: application/octet-stream");  
     $save_as_name = basename($filename);   
     header("Content-Disposition: attachment; filename=\"$save_as_name\""); 
     readfile($filename);   
}

大きなファイルをダウンロードすると、ダウンロードが完了するまでディレクトリ ツリーを参照できません。

これを並行して行う機会はありますか?

4

1 に答える 1

0

おそらくセッションを使用しています。ウィンドウ A でセッションを開いている間、ウィンドウ B はダウンロードを提供するためにビジー状態になっていますが、ウィンドウ B はページを取得できません。これは、A を提供している PHP プロセスがまだセッション データを開いている/ロックしており、B がそのロックが解放されるのを待っているためです。

簡単な解決策は、 を呼び出すsession_write_close()前のある時点で を呼び出すことreadfile()です。これにより、セッションがサーバー上のディスクにコミットされ、閉じられ、ロックが解除されて、他の PHP プロセスがそれを取得できるようになります。

于 2013-02-22T16:10:56.423 に答える