Я работаю над программой с php для загрузки файлов.
запрос скрипта выглядит так: http://localhost/download.php?file=abc.zip
Я использую некоторый скрипт, упомянутый в Возобновляемые загрузки при использовании PHP для отправки файла?
это определенно работает для файлов до 300M, многопоточных или однопоточных загрузок, но, когда я пытаюсь загрузить файл> 300M, у меня возникает проблема при однопоточной загрузке, я скачал только около 250M данных, то кажется, что http-соединение разорвано. это не ломается в точке останова .. Почему?
отлаживая скрипт, я точно определил, где он сломался:
$max_bf_size = 10240;
$pf = fopen("$file_path", "rb");
fseek($pf, $offset);
while(1)
{
$rd_length = $length < $max_bf_size? $length:$max_bf_size;
$data = fread($pf, $rd_length);
print $data;
$length = $length - $rd_length;
if( $length <= 0 )
{
//__break-point__
break;
}
}
похоже, что каждый запрошенный документ может получить только 250 МБ буфера данных до echo
или print
.. Но это работает, когда я использую многопоточность для загрузки файла