Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Загрузка файлов размер которых больше ОЗУ сервера.

34K
21 сентября 2009 года
KIM-iras
7 / / 11.03.2008
[FONT="Arial Black"]Условие:[/FONT]
- Имеется доступ ко всем настройкам сервера Apache и к php.ini (собственный выделенный сервер).
- возможность работы с Perl и PHP
- [COLOR="Red"]ОЗУ (RAM) сервера всего 512МБ[/COLOR].
- Использовать протокол FTP запрещено, так как требуется регистрация файлов в БД и тд...

[FONT="Arial Black"]Задача[/FONT]
- Требуется сделать upload'ер файлов с браузера на сервер через протокол HTTP. Размер файлов в среднем 1ГБ (Почти в 2 раза больше чем RAM), а главное, что несколько таких файлов должны загружаться одновременно с разных IP.

[FONT="Arial Black"]Проблема[/FONT]
Обычный метод загрузки PHP тут бессилен ибо загрузка упирается в RAM.

[COLOR="Blue"]Как быть? Что использовать?[/COLOR]
92
21 сентября 2009 года
Тень Пса
2.2K / / 19.10.2006
http://www.google.ru/search?q=xupload&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox

а вообще, Perl CGI может (я думаю и PHP в силах, но лично я не занимался этим вопросом с использованием PHP)... (собственно, в этом продукте во free'шной версии можно раскопать как это делается)
12
22 сентября 2009 года
alekciy
3.0K / / 13.12.2005
На что только люди не идут, что бы nginx на ставить...

В 2009 году вы все еще загружаете файлы на сервер через mod_php?! :eek: Тогда мы идем к вам!

http://www.grid.net.ru/nginx/upload.ru.html
http://www.sysoev.ru/nginx/docs/
256
22 сентября 2009 года
foxweb
1.0K / / 27.07.2005
Цитата: alekciy
На что только люди не идут, что бы nginx на ставить...

В 2009 году вы все еще загружаете файлы на сервер через mod_php?! :eek: Тогда мы идем к вам!

http://www.grid.net.ru/nginx/upload.ru.html
http://www.sysoev.ru/nginx/docs/



Привет) Сто лет меня тут не было и вот зашёл.
А расскажи в общих чертах, как этот механизм действует? Прямая запись потока на диск? (хотя как ещё...)

34K
22 сентября 2009 года
KIM-iras
7 / / 11.03.2008
Значит надо использовать ngnix или Perl...
Вопросы:
1) ngnix у меня есть, он с ISPmanager'ом установился. Я так и не понял, даже почитав по вашим ссылкам, как с ним работать...

2) Perl - запись файла на HDD идёт сразу без загрузки файла в ОЗУ? Ведь он сразу файл принимает, а не как PHP. Или для обработки файла Perl всёже пихает всё в RAM ???
12
22 сентября 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: foxweb
Привет) Сто лет меня тут не было и вот зашёл.
А расскажи в общих чертах, как этот механизм действует? Прямая запись потока на диск? (хотя как ещё...)


Сам давно не захожу...

Ну сам спросил, сам ответил :D
Кроме того полезная фича это передача на фронтенд ссылки на загруженный файл, а не его копирование между процессами, как это бывает обычно.

12
22 сентября 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: KIM-iras
Значит надо использовать ngnix или Perl...
Вопросы:
1) ngnix у меня есть, он с ISPmanager'ом установился. Я так и не понял, даже почитав по вашим ссылкам, как с ним работать...

2) Perl - запись файла на HDD идёт сразу без загрузки файла в ОЗУ? Ведь он сразу файл принимает, а не как PHP. Или для обработки файла Perl всёже пихает всё в RAM ???


Насчет перла ни чего не скажу, как там организованна загрузка без понятия.

1) http://ru.wikipedia.org/wiki/Nginx
Обычно ISPmanager сам настраивает связку правильно ставя nginx фрондендом, а Apache бэкендом.

2) Если файл не только загружаем, но еще и обрабатываем (фотка?) и его размер 1ГБ, то при имеющихся 512МБ его стандартными библиотеками не обработать в любом случае. Тут придется копать в сторону блочной обработки файла.

34K
22 сентября 2009 года
KIM-iras
7 / / 11.03.2008
Цитата: alekciy

Если файл не только загружаем, но еще и обрабатываем (фотка?) и его размер 1ГБ, то при имеющихся 512МБ его стандартными библиотеками не обработать в любом случае. Тут придется копать в сторону блочной обработки файла.



1) Извиняюсь за некоррекность - Под понятием обработать я хотел сказать, что файл надо переименовать на оригинальное имя (чтобы небыло конфликтов) далее записать его размер, тип, настоящее имя и тд в БД (исп. СУБД MySQL) - редактировать файл нет необходимости...

2) Поискал в инете про upload в Nginx, но так и не понял как он это производит. Если у меня на странице сайта в форме указан action="http://имя_сайта/upload.php", то файл будет перехвачен фрондендом и закачан с минимальными нагрузками на сервер, а скрипт upload.php что будет делать, что с ним?

3) Не нашёл на счёт расхода RAM при uploade на Nginx, Если PHP загружает весь файл в RAM, то Nginx как себя ведёт?

12
23 сентября 2009 года
alekciy
3.0K / / 13.12.2005
Цитата: KIM-iras
1) Извиняюсь за некоррекность - Под понятием обработать я хотел сказать, что файл надо переименовать на оригинальное имя (чтобы небыло конфликтов) далее записать его размер, тип, настоящее имя и тд в БД (исп. СУБД MySQL) - редактировать файл нет необходимости...


Тогда глупости все это. При чистом upload ОЗУ PHP не потребляет. Более того, до тех пор пока файл не будет получен полностью управление в скрипт передано не будет. Именно поэтому на PHP нельзя написать пресс-индикатор загрузки файла (хотя можно, если доустановить APC).

 
Код:
Файл 1
Имя принятого файла VTS_04_3.VOB
Тип файла video/mpeg-system
Размер принятого файла 1073739776
Имя временного файла C:\WINDOWS\Temp\php32A.tmp
Ошибка 0
Файл перемещен на сервер

Это я загрузил гиговый дивидишный файл.

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

В общем марш в мануал читать описание upload_max_filesize, max_input_time и post_max_size директив.
6
23 сентября 2009 года
George
4.1K / / 05.01.2007
далеко идти причем не надо. недалече я интересовался:
http://forum.codenet.ru/showthread.php?t=56294
92
23 сентября 2009 года
Тень Пса
2.2K / / 19.10.2006
Цитата: alekciy
Тогда глупости все это. При чистом upload ОЗУ PHP не потребляет. Более того, до тех пор пока файл не будет получен полностью управление в скрипт передано не будет. Именно поэтому на PHP нельзя написать пресс-индикатор загрузки файла (хотя можно, если доустановить APC).
 
Код:
Файл 1
Имя принятого файла VTS_04_3.VOB
Тип файла video/mpeg-system
Размер принятого файла 1073739776
Имя временного файла C:\WINDOWS\Temp\php32A.tmp
Ошибка 0
Файл перемещен на сервер

Это я загрузил гиговый дивидишный файл.

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

В общем марш в мануал читать описание upload_max_filesize, max_input_time и post_max_size директив.


кста, скорее всего да... отсыхает по таймауту.

Автор, я кинул тебе ссылку на xupload, там как раз аплоадер с индикатором загрузки файла и в БД вся инва пихается тоже (если не ошибаюсь). Качни фришную версию, да глянь. Либо тюнь свой аплоад на PHP :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог