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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачать несколько файлов одним запросом 
:(
    Опции темы
dark_religion
Дата 6.6.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Необходимо скачать 50 тысяч файлов на компьютер пользователя, что бы ему нужно было не по отдельности каждый файл сохранять. а что бы они все сохранились в какую-то одну папку. Размер больше гигабайта. ТО есть нельзя все грузить в память сразу. можно только по одному.

PM MAIL   Вверх
ksnk
Дата 6.6.2009, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



dark_religion, архивировать в zip. так может и меньше гигабайта получится.

50к файлов - это не простой юзер. Может этому непростому юзеру по ftp зайти?


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
dark_religion
Дата 6.6.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



скажи мне как ты в зип добавишь один гигабайт с помощью пхп??? а по поводу фтп, юзер может быть не простой но файлы находятся на хостинге каким образом можно дать ему доступ по фпт? если мне самому доступ по фтп дают через пароль и настраивать я там ничего немогу. а доступ к своему сайту тоже дать немогу!
PM MAIL   Вверх
ksnk
Дата 6.6.2009, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Тогда, если юзер желает ограничится только броузером, никак.

50 тыщ кликов, и золотой ключик у вас в кармане... smile 

Можно паковаться "насколько влезет в память" и раздавать не очень большое количество архивов. 

Можно состряпать страницу со ссылками на эти файлы (или архивы) и пусть юзер скажет "Сохранить как">> "Beб, страница полностью". Если повезет, все файлы могут оказаться на месте. В Опере, imho, есть специальный пункт меню - укачать все ссылки со страницы.

Можно напридумывать еще решений, которые сведутся к установке конкурентного FTP способу доступа к файлам.

В качестве офтопика
В принципе, я слышал о человеке, которому оказалось не в лом прокликать ~2000 раз по товарам в магазине на одном из моих сайтов, а потом плакать, что в квитанции пришло только 200... Ну не расчитывал я тогда на больше...




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
dark_religion
Дата 6.6.2009, 17:25 (ссылка)   | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо за ответы! Эти решения мне не сильно подходят!
PM MAIL   Вверх
p0zt3r
Дата 6.6.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



опишите проблему подробнее, плиз!

У вас эти файлы динамически создаются? Или у вас несколько милионов файлов, а вам пользователю надо выборку из 50000 выдавать?

В чем проблема-то реально?  В среднем 20 кило файл весит. Упаковать даже сотню файлов - небольшая проблема. Дело нескольких секунд на RAID, наверно. Другое дело, что нужно как-то оптимизировать их для файловой системы, чтобы минимизировать время поиска в файловой таблице этих файлов.

Можно ещё написать простую качалку, а можно создать для фриварной качалки какой-нить скрипт и давать юзеру возможность скачать эту приблуду вместе с фриварной качалкой. 

Вот, например, в Reget'е, разобрать файл закачек можно за полвечера и бутылку пива. Он там текстовый. Генери на серваке файл закачки и выдавай пользователю -- самый прямолинейный вариант. =)
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
gta4kv
Дата 6.6.2009, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

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



Цитата

а по поводу фтп, юзер может быть не простой но файлы находятся на хостинге каким образом можно дать ему доступ по фпт? если мне самому доступ по фтп дают через пароль и настраивать я там ничего немогу. а доступ к своему сайту тоже дать немогу!

Если вы, блин, не знаете лучше бы не комментировали.
Связкой proftpd + mysql и не такие чудеса можно сделать.

Цитата

Можно паковаться "насколько влезет в память" и раздавать не очень большое количество архивов. 

Разве архив полностью в памяти будет лежать до полной упаковки?
Хотя, насколько я понял, автор решил проблему там — http://forum.vingrad.ru/forum/topic-262316.html

Это сообщение отредактировал(а) gta4kv - 6.6.2009, 23:57
PM MAIL   Вверх
dark_religion
Дата 8.6.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Вот, например, в Reget'е, разобрать файл закачек можно за полвечера и бутылку пива. Он там текстовый. Генери на серваке файл закачки и выдавай пользователю -- самый прямолинейный вариант. =)


интересный вариант ---


Цитата

Другое дело, что нужно как-то оптимизировать их для файловой системы, чтобы минимизировать время поиска в файловой таблице этих файлов



а как можно оптимизировать?

Цитата

Если вы, блин, не знаете лучше бы не комментировали.
Связкой proftpd + mysql и не такие чудеса можно сделать.


да я не знаю, можно поподробнее об этом? как узнат есть ли на сервере proftpd и где про него читать?

---

Цитата

Разве архив полностью в памяти будет лежать до полной упаковки?


может лежать и не в памяти. но дело в том, что я сам немогу написать этот архиватор. А все готовые которые в интернете для пхп они работают через память. я пытался переделать, что бы это было через файлы, но понял, что для меня это будет долго.

===============

Вообще да я вопрос решил, тем что поместил в один файл все файлы. в тар

но на счет скачивания большого количества файлов я в интернете видел какой-то пример с использованием MIME интересно было бы узнать как такое сделать на пхп!
PM MAIL   Вверх
gta4kv
Дата 8.6.2009, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

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



Цитата

как узнат есть ли на сервере proftpd и где про него читать?

Ну, если у вас хостинг — это не вариант.
PM MAIL   Вверх
krundetz
Дата 10.6.2009, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



dark_religion, помоему ты смотриш не в ту сторону. У тебя проблема на клиенте, а ты пытаешься решить ее на сервере. Как я понял есть юзер у него на компе неким образом выбираються 50к файлов, ну так и сделай из них очередь и закачивай ajax-ом. Для выборки целыми директориями вроде что то во flash было. Можешь посмотреть в сторону новых сетевых технологий silverlight, air, javaFX. На сервере же просто принимаете файл от клиента стандартным способом по отдельности тоесть. Для того чтобы файлы сохранялись в одну папку неплохо бы сообщить серверу куда их необходимо поместить и как, вплоть до полного повторения иерархии пользователя.

Это сообщение отредактировал(а) krundetz - 10.6.2009, 22:45


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
p0zt3r
Дата 11.6.2009, 00:37 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



krundetz, в общем-то так и есть. Только ровно наоборот. Человеку надо пользователю (клиенту) выдать кучу файлов.

dark_religion, Можно сварганить свой менеджер закачек. Это тотально просто на том ж делфи, но не на флеше - в нём возможности сохранять инфу на винт клиента нет. 
Можно оформить в виде ActiveX для пользователей виндовс, тогда будет возможность прямо с сайта, кликнув на ссылку, производить скачивание файлов. Только юзер испугается предупреждений безопасности и всего такого прочего.

Клиентская сторона должна уметь читать метафайл(XML) от сервака, в котором будут URI файлов для скачивания. Если предположить, что 50000 файлов могут иметь URI  в 20 байт длинной, то мета файл будет минимум 976 кБайт в длину. А т.к. энтропия данных будет небольшой, то с помощью серверного gzip'а можно его ужимать процентов на 80, а на клиенте предварительно распаковывать.

Кроме того, можно попробовать на серваке средствами PHP создавать процессы неограниченные таймаутом, которые соберут без сжатия с помощью архиватора TAR кучу файлов в один (исконное предназначение тар'а),  а юзеру отсылать уже этот архив.


ЗЫ
Я считаю, что  в любом случае надо собирать всё в один файл на сервере, чтобы не создавать проблем юзерам. И договариваться с хостингом. Или менять хостинг.

ЗЫЫ
По поводу оптимизации файловых таблиц и операций ввода/вывода на винт проконсультируйся со спецами по кластерам, RAID, MDMI.

Добавлено через 5 минут и 6 секунд
Да, совсем забыл.

Если у тебя на серваке можно использовать команду AT, то вперёд. Твой PHP, работающий с клиентом должен генерить файлы  "задач" для "компоновщика" файлов в один и выдавать пользователю страницу "Ваш запрос обрабатывается. Подождите, пожалуйста!", которая обновляется через минуту.  На Перле пишешь консольный скрипт, который собирает всю кучу и генерит нормальный URI. Настраиваешь планировщик at так, чтобы он каждые полминуты запускал твой консольный скрипт. 
Через минуту скрипт, обрабатывающий клиента, считывает уже сгенеренный URI. 

Собственно, самый красивый вариант.

ЗЫ что ж я раньше не допёр-то?


Это сообщение отредактировал(а) p0zt3r - 11.6.2009, 00:37
--------------------
24*7*365*геморой*зарплата=0
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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