webew
Войти » Регистрация
 
PHP

Файлообменник

29 октября 2012, 11:04
Автор: moder
Здравствуйте! Я, в общем, новичок в веб-разработке. Но так уж получилось, что мне надо реализовать загрузку файлов размером более 1 Гб на файловый сервер. Сервер реализован как веб-сервер. Ось Дебиан 6, Апач, PHP 5 присутствует. Дополнительно библиотеки и прочее, если необходимо, соответственно, можно поставить.
Нужна загрузка файлов очень большого объема. В том числе в виде архивов. Реализация примерно так же, как на Яндексе, то есть через веб-интерфейс. Вариант использовать услуги Яндекса меня не устраивает по правовым причинам. Очень нужен собственный сервер с такой возможностью. У меня есть вариант подобного приложения на PHP, но размер загружаемого файла и продолжительность загрузки в данном случае напрямую зависит от ограничений, заложенных в php.ini. То есть хочешь загрузить огромный файл - лезь в php.ini и меняй ограничения, в том числе время выполнения скрипта. Но это, разумеется пагубно может повлиять на сервер в случае многопользовательских загрузок и скачивания. ((( Кто-нибудь может подсказать, как можно реализовать загрузку и скачку на собственный сервер по примеру Яндекса и не меняя вышеуказанные ограничения? То есть обойти эти ограничения. Конкретный код не столь важен. Интересует как принципе это можно грамотно реализовать? Какие технологии и в каком качестве использовать? Если можно, расскажите подробнее, плиз...

Буду очень признателен!:)))
Добавить комментарий

1234ru

Думаю, тут апачом не обойтись.

Посмотрите в сторону nginx и его модулей для загрузки файлов:

http://wiki.nginx.org/HttpUploadProgressModule
http://www.grid.net.ru/nginx/upload.en.html
То, что не убивает нас, делает нас инвалидами.
29.10.2012, 15:30
Ответить

paulus

Очень странного Вы хотите — обойти ограничение PHP и в то же время не обходить ограничение PHP :)

Посмотрите в сторону протоколов, которые поддерживают докачку — тот же FTP. Гигабайт наверх без
разрыва — это очень круто.
29.10.2012, 22:14
Ответить
NO USERPIC

moder

Спасибо огромное всем, кто ответил! ОЧЕНЬ признателен! Посмотрел ссылки. Больше, правда, заинтересовали русскоязычные ресурсы, уж извините... Думаю Nginx будет, вероятно, более приемлемым вариантом, поскольку если честно, пока не до конца не понимаю, как именно заставить фтп работать через веб-интерфейс. Такая разработка у меня впервые... По крайней мере уже знаю, что на nginx работают ведущие коммерческие хостинги нашей страны. По крайней мере timeweb, насколько мне известно, его использует. Буду разбираться дальше, как и на чем проще мне будет сделать эту закачку. Если получится, то посредством ФТП. В крайнем случае готов даже переподнять заново сервер.))) Во всяком случае найденные в инете скрипты на php, использующие загрузку по ФТП у меня не заработали((( Если кто готов таковыми, но рабочими поделиться, буду благодарен!

P.S.: касаемо вопроса «обойти и не обходить ограничения php» - именно ОБОЙТИ, НО НЕ МЕНЯЯ этих ограничений. Эти ограничения, насколько мне известно, поставлены из опыта стабильной работы серверов при выполнении в том числе и подобной задачи. Если изменить эти ограничения в большую сторону, то при той же загрузке бОльшим количеством пользователей ресурсов сервера может элементарно не хватить и он он просто «ляжет». То есть это лучше рассматривать как временную разовую меру, нежели как постоянный режим работы. Вот этого мне как раз и не хотелось бы (подобный опыт у меня уже имеется). Мне нужно конкретно следующее - загрузка и скачивание файла такого объема может осуществляться любым другим скриптом или пакетом (не столь важно), для функционирования которого не требуется переписывать ограничения и работа его не будет перегружать сервер при постоянной работе в таком режиме. Или более простыми словами - принцип работы как у фтп и работа полностью через браузер как с обычным сайтом. Надеюсь я достаточно доходчиво ответил на Ваш вопрос...
30.10.2012, 14:18
Ответить
© 2008—2017 webew.ru, связаться: x собака webew.ru
Сайт использует Flede и соответствует стандартам WAI-WCAG 1.0 на уровне A.
Rambler's Top100

Реклама: