Я хочу отправить пользователю внешний файл MP4 кусками по 1 МБ каждый. С каждым фрагментом я обновляю запись в базе данных, чтобы отслеживать процесс загрузки. Я использую fread() для чтения файла по частям. Вот урезанный код:
$filehandle = fopen($file, 'r');
while(!feof($filehandle)){
$buffer = fread($filehandle, 1024*1024);
//do some database stuff
echo $buffer;
ob_flush();
flush();
}
Однако, когда я проверяю размер фрагмента на некоторой итерации внутри цикла while, с помощью
$chunk_length = strlen($buffer);
die("$chunk_length");
Я никогда не получаю желаемый размер куска. Он колеблется где-то в районе 7000 - 8000 байт. Далеко не 1024*1024 байта. Когда я уменьшаю размер фрагмента до меньшего числа, например 1024 байта, он работает, как и ожидалось.