Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачивание больших файлов, за пределами www 
:(
    Опции темы
Bounty
Дата 16.1.2008, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.12.2005

Репутация: нет
Всего: нет



Помогите, плиз!

У меня стоит задача, чтобы пользователь с закрытой странички скачивал файлы.
Сами файлы лежат за пределами www (на уровень выше)
Проблема в том, что маленькие файлы скачиваются просто, а вот большие (видеоролики, например, 100Мб) вообще не скачиваются...
Вот код файла в который скачивает файлы:
Код

header("Content-type: application/force-download;"); 
$fname="z://home/lslalala.com/inc/down".$path;
$len = filesize( $fname );
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Transfer-Encoding: binary");
header('Content-Disposition: attachment; filename="'.basename($fname).'"'); 
header("Content-Length: ".$len);
readfile($fname);

Я уже не знаю, в чем может быть проблема...:(
PM MAIL   Вверх
flashaa
Дата 16.1.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(Bounty @  16.1.2008,  16:22 Найти цитируемый пост)
а вот большие (видеоролики, например, 100Мб) вообще не скачиваются...

У скрипта есть ограничения на используемую память и время работы... Ограничение по дефолту 8 МБ.. Подумайте, как скрипт может считать 100 МБ и уместить в 8 МБ. Потом при отправке идет время... По дефолту это 30 сек. 
Выдавать такие громадные файлы скриптом соответственно неэффективно.
PM MAIL   Вверх
MoLeX
Дата 16.1.2008, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(Bounty @  16.1.2008,  16:22 Найти цитируемый пост)
$fname="z://home/lslalala.com/inc/down".$path;

а так
Код

$fname="../".$path;


Добавлено через 1 минуту и 2 секунды
Цитата(flashaa @  16.1.2008,  16:27 Найти цитируемый пост)
У скрипта есть ограничения на используемую память и время работы... Ограничение по дефолту 8 МБ.. Подумайте, как скрипт может считать 100 МБ и уместить в 8 МБ. Потом при отправке идет время... По дефолту это 30 сек. Выдавать такие громадные файлы скриптом соответственно неэффективно.


точно, у меня то это фсе намного больше стоит))) вот не полные пути и посоветовал


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
Bounty
Дата 25.1.2008, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 12.12.2005

Репутация: нет
Всего: нет



Я так поняла, что именно при readfile файл в опу идет, а на сервере стоит ограничение много меньшее 100Мб...(((
Как быть иначе? ведь файлы за пределами www
PM MAIL   Вверх
flashaa
Дата 25.1.2008, 11:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: 19
Всего: 25



Цитата(Bounty @  25.1.2008,  11:08 Найти цитируемый пост)
Как быть иначе? ведь файлы за пределами www 

Думаю, здесь и проблема. Если файл доступен юзеру он должен быть в www.
Это исходя просто из логики. Вообще с такой задачей не сталкивался и сходу не могу сообразить, как лучше. 
Можно, допустим прикрывать ваши файлы htaccess. А когда пользователь получает доступ к файлу, дописывать правило mod_rewrite c каким-то случайным хешем.

К примеру, такую строку: RewriteRule ^file/sdas123fsklg123h downloads/имя_вашего_файла_на_скачивание
и соответственно пересылать пользователя на адрес file/sdas123fsklg123h, чтобы он мог скачать. При этом истинное имя и расположение файла он не узнает.

Если от условия, что файлы выше www, не уйти, то можно попробовать решить две проблемы(с памятью и временем работы) так: 
1) считать файл по фрагментам, тогда память не будет занята. 
2) установить set_time_limit(0) - это отключит ограничение по времени, хотя не уверен на счет того, что это разрешается на всех хостингах.

Имхо, здесь ошибка в архитектуре. Донлоад файлов через скрипт таким образом это же совсем для скриптов задача.


Это сообщение отредактировал(а) flashaa - 25.1.2008, 11:40
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.