![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Необходимо скачать 50 тысяч файлов на компьютер пользователя, что бы ему нужно было не по отдельности каждый файл сохранять. а что бы они все сохранились в какую-то одну папку. Размер больше гигабайта. ТО есть нельзя все грузить в память сразу. можно только по одному.
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
dark_religion, архивировать в zip. так может и меньше гигабайта получится.
50к файлов - это не простой юзер. Может этому непростому юзеру по ftp зайти? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
скажи мне как ты в зип добавишь один гигабайт с помощью пхп??? а по поводу фтп, юзер может быть не простой но файлы находятся на хостинге каким образом можно дать ему доступ по фпт? если мне самому доступ по фтп дают через пароль и настраивать я там ничего немогу. а доступ к своему сайту тоже дать немогу!
|
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Тогда, если юзер желает ограничится только броузером, никак.
50 тыщ кликов, и золотой ключик у вас в кармане... Можно паковаться "насколько влезет в память" и раздавать не очень большое количество архивов. Можно состряпать страницу со ссылками на эти файлы (или архивы) и пусть юзер скажет "Сохранить как">> "Beб, страница полностью". Если повезет, все файлы могут оказаться на месте. В Опере, imho, есть специальный пункт меню - укачать все ссылки со страницы. Можно напридумывать еще решений, которые сведутся к установке конкурентного FTP способу доступа к файлам. В качестве офтопика В принципе, я слышал о человеке, которому оказалось не в лом прокликать ~2000 раз по товарам в магазине на одном из моих сайтов, а потом плакать, что в квитанции пришло только 200... Ну не расчитывал я тогда на больше... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| dark_religion |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
Спасибо за ответы! Эти решения мне не сильно подходят!
|
|||
|
||||
| p0zt3r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 128 Регистрация: 4.2.2007 Где: Самара Репутация: 3 Всего: 6 |
опишите проблему подробнее, плиз!
У вас эти файлы динамически создаются? Или у вас несколько милионов файлов, а вам пользователю надо выборку из 50000 выдавать? В чем проблема-то реально? В среднем 20 кило файл весит. Упаковать даже сотню файлов - небольшая проблема. Дело нескольких секунд на RAID, наверно. Другое дело, что нужно как-то оптимизировать их для файловой системы, чтобы минимизировать время поиска в файловой таблице этих файлов. Можно ещё написать простую качалку, а можно создать для фриварной качалки какой-нить скрипт и давать юзеру возможность скачать эту приблуду вместе с фриварной качалкой. Вот, например, в Reget'е, разобрать файл закачек можно за полвечера и бутылку пива. Он там текстовый. Генери на серваке файл закачки и выдавай пользователю -- самый прямолинейный вариант. =) --------------------
24*7*365*геморой*зарплата=0 |
|||
|
||||
| gta4kv |
|
||||
![]() 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 |
||||
|
|||||
| dark_religion |
|
||||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 198 Регистрация: 8.9.2006 Репутация: нет Всего: -3 |
интересный вариант ---
а как можно оптимизировать?
да я не знаю, можно поподробнее об этом? как узнат есть ли на сервере proftpd и где про него читать? ---
может лежать и не в памяти. но дело в том, что я сам немогу написать этот архиватор. А все готовые которые в интернете для пхп они работают через память. я пытался переделать, что бы это было через файлы, но понял, что для меня это будет долго. =============== Вообще да я вопрос решил, тем что поместил в один файл все файлы. в тар но на счет скачивания большого количества файлов я в интернете видел какой-то пример с использованием MIME интересно было бы узнать как такое сделать на пхп! |
||||||||
|
|||||||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 21 Всего: 91 |
Ну, если у вас хостинг — это не вариант. |
|||
|
||||
| krundetz |
|
|||
![]() Вечный странник ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1400 Регистрация: 14.6.2007 Где: НН(Сормово) Репутация: 20 Всего: 69 |
dark_religion, помоему ты смотриш не в ту сторону. У тебя проблема на клиенте, а ты пытаешься решить ее на сервере. Как я понял есть юзер у него на компе неким образом выбираються 50к файлов, ну так и сделай из них очередь и закачивай ajax-ом. Для выборки целыми директориями вроде что то во flash было. Можешь посмотреть в сторону новых сетевых технологий silverlight, air, javaFX. На сервере же просто принимаете файл от клиента стандартным способом по отдельности тоесть. Для того чтобы файлы сохранялись в одну папку неплохо бы сообщить серверу куда их необходимо поместить и как, вплоть до полного повторения иерархии пользователя.
Это сообщение отредактировал(а) krundetz - 10.6.2009, 22:45 |
|||
|
||||
| p0zt3r |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |