|
|
|
| Написал вот такой код:
header("Content-disposition: filename=".basename($file));
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");
readfile($file);
|
1. Когда у меня открывается окно сохранить файл, там не пишется размер файла. Какой заголовок должен быть, чтобы можно было понять какого размера файл?
2. Сильно ли будет нагружаться PHP при такой загрузке файла?
З.ы. Где можно найти подробную документация по заголовкам? | |
|
|
|
|
|
|
|
для: YaRosh
(30.11.2005 в 15:34)
| | 1) Вы потому-то размер не высылаете в заголовке - нужно послать следующий заголовок
<?php
header("Content-Length: ".filesize($file));
?>
|
2) Ну нагрузка будет, но вообще без нагрузки вы файл не отправите :)))
3) Основы протокола HTTP описываются в rfc2616 http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=2283, но там далеко не всё, например авторизация идёт уже в rfc2617, нововведения описываются в более поздних rfc. | |
|
|
|
|
|
|
|
для: cheops
(30.11.2005 в 16:08)
| | Спасибо. =) | |
|
|
|
|
|
|
|
для: cheops
(30.11.2005 в 16:08)
| | Еще вопрос.
При скачивание через PHP файлов размером около 300Мб. PHP использует из памяти 300Мб. под скачивание этого файла.
Как я понимаю функция readfile() полностью загружает файл в память. Можноли сделать, чтобы файл читался строками?
З.ы. Вообще мне нужно чтобы пользователи могли скачавать файлы, но не знали прямую ссылку на файл. Файло от 1Мб. до 1000Мб. | |
|
|
|
|
|
|
|
для: YaRosh
(30.11.2005 в 23:39)
| | я когда-то тоже писал скрипт для скачивания файлов через php. 300 Мб скачивать с помощью php - гиблое дело, если только сервак не жалко.
readfile(), насколько я помню, читает файл от текущей позиции указателя до конца. Можно читать файл кусками:
while(!feof($fd)) //читаем до конца файла
print fread($fd, 2048); //кусками по 2048 байт
|
Я использую функцию fpassthru() - файлы небольшие (3-4 Мб) качаются без проблем. | |
|
|
|