外部mp4ファイル(複数)のPHPによるダウンロードがうまく出来ない
前提・実現したいこと
PHPで、外部ファイルのmp4のURLを複数取得し、ループさせ、1つずつダウンロードしたい。
発生している問題・エラーメッセージ
samp;e1.mp4 sample2.mp4 sample3.mp4とダウンロードされるはずが
sample1.mp4だけがダウンロードされ、しかもファイルサイズが巨大になる。(2~以降の分も入っている?)
そして、その動画も壊れているようで再生できない。
些細なことでもお分かりの方がいましたら、助かります。
該当のソースコード
<?php
$c = 1;
foreach( $urls as $url){
$header = get_headers($url, 1);
mb_http_output("pass");
header("Cache-Control: public");
header("Pragma: public");
header('Content-Type: application/octet-stream');
header('Content-Length: '.$header['Content-Length']);
header('Content-disposition: attachment; filename="sample'.$c.'.mp4"');
$c = $c + 1;
$fp = fopen($url, 'rb');
while(!feof($fp)) {
$buf = fread($fp, 1048576);
echo $buf;
ob_flush();
flush();
}
fclose($fp);
}
?>
試したこと
ループ処理にせず、単一のURLだけ指定するとうまくダウンロードでき、動画も再生できる。
URLは正しく取得できていることはログで確認済みです。
補足情報(FW/ツールのバージョンなど)
php7です。
linux環境です。