Заголовки и загрузки PHP - PullRequest
0 голосов
/ 09 декабря 2011

В настоящее время я пытаюсь разработать приложение PHP, в котором мой сервер загружает файл, и пользователь может сделать то же самое почти одновременно. Я уже думаю о проблеме «Если пользователь загружает быстрее, чем сервер ...», но это не проблема в данный момент. Для этого я использовал функции заголовка и readfile в php. Вот мой код:

header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename="'.$data['name'].'";'); 
header('Content-Transfer-Encoding: binary'); 
header('Content-Length: '.$data['size']);
readfile($remoteFile);

Я должен использовать заголовок Content-length, чтобы установить правильный размер файла, а не размер, который загружается, когда пользователь нажимает на ссылку. Однако через несколько секунд или минут загрузка останавливается, и мне нужно перезапустить ... Если вы думаете о решении, даже если оно не использует header (); функция, пожалуйста, скажите мне.

Заранее спасибо ...

1 Ответ

0 голосов
/ 09 декабря 2011

Я обнаружил, что это напрямую связано с максимальными настройками времени выполнения, которые навязываются вам, если вы запускаете с включенным safe_mode.

Если у вас есть опция, попробуйте установить set_time_limit(0) и посмотрите, работает ли она.

если у вас есть свой собственный сервер, вы должны заглянуть в mod_xsendfile Модуль для Apache, так как он построен специально для отправки больших файлов пользователю.

О, и его тупо проста в использовании

header("X-Sendfile: $path_to_somefile");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$somefile\"");
exit;
...