現在、次のPHP関数を使用して、ユーザーがファイルを選択してダウンロードできるようにしています。これはFTP経由で発生します。ただし、ユーザーが大きなファイルを選択した場合、ダウンロードの実行中に、他の要求に対してサーバーがロックされます。PHPがリクエストに応答し続けている間にファイルをホストする方法はありますか?
ユーザーが自分の資格情報を使用してファイルをダウンロードすることを許可されていることを確認するためにPHPが必要なので、アセットとしてホストすることはできません。ファイルはFTPサーバーにあります。
function download($file) {
$fileStream = "";
if($this->get($file)) {
//Send header to browser to receive a file
header("Content-disposition: attachment; filename=\"$file\"");
header("Content-type: application/octet-stream");
header("Pragma: ");
header("Cache-Control: no-cache");
header("Expires: 0");
$data = readfile($this->downloadDir . $file);
$i=0;
while ($data[$i] != "")
{
$fileStream .= $data[$i];
$i++;
}
unlink($this->downloadDir . $file);
echo $fileStream;
exit;
} else {
return false;
}
}