Загрузка больших файлов (1Gb+) на сервер через HTTP с возможностью докачки.

Тема в разделе "PHP Pro", создана пользователем casher, 20 июн 2011.

Статус темы:
Закрыта.
  1. casher

    casher

    Регистр.:
    24 фев 2008
    Сообщения:
    168
    Симпатии:
    17
    Насколько я понял, на чистом PHP это в принципе не возможно. Или я ошибаюсь?
    Вот нагуглил jfileupload (http://www.jfileupload.com/products/jfileupload/index_ru.html) на Java, но он сцуко - платный. Может кто знает фришные аналоги или альтернативные решения на AJAX'е или флеше?
    Подскажите, пожалста, готовое решение для интеграции в двиг.
     
  2. xRay_TFB

    xRay_TFB Постоялец

    Регистр.:
    17 мар 2010
    Сообщения:
    60
    Симпатии:
    35
    видел такое у вот этого загрузчика: Lightweight Uploader
    http://lwu.no-ip.org

    Но для Ваших целей у него есть ограничения:
    т.е. работает это только в html5 или Silverlight.

    вот здесь еще почитайте:
    http://phpclub.ru/talk/threads/%D0%97%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BA%D0%B0-%D0%BE%D1%87%D0%B5%D0%BD%D1%8C-%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B8%D1%85-%D0%BE%D0%B3%D1%80%D0%BE%D0%BC%D0%BD%D1%8B%D1%85-%D1%84%D0%B0%D0%B9%D0%BB%D0%BE%D0%B2.67029/
     
    casher нравится это.
  3. casher

    casher

    Регистр.:
    24 фев 2008
    Сообщения:
    168
    Симпатии:
    17
    Это как раз не критично, т.к. пользователей ограниченное количество и можно им поставить браузер с поддержкой тогоже html5, а вот то что он работает только на nginx - проблема. Переживаю что при переходе на него начнут вылазить косяки и работа встанет, это неприемлемо.

    Топик на phpclub.ru уже видел, там ТС как раз на JFileUpload сделал.
     
  4. xRay_TFB

    xRay_TFB Постоялец

    Регистр.:
    17 мар 2010
    Сообщения:
    60
    Симпатии:
    35
    не уверен, но по-моему, этот загрузчик можно использовать и без nginx с помощью каких-то шаманских действ.
    где видел - уже не помню, к сожалению. дело в том, что исходный код открыт.

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

    например, так сделано у Агавы.
    т.е. nginx отдает статику (причем очень быстро),
    если же есть обращения к php например, то nginx шлет запрос к Apache.

    вопрос: сервер ваш? или у хостера?

    еще: вообще протокол http не предназначен для загрузки файлов больших объемов на сервер, причем с докачкой.
    при использовании flash-загрузчиков они грузят файл в память, используемую браузером, а потом делают то, что необходимо.
    отсюда ограничения на размер файла. и я поэтому не видел flash-загрузчиков, справляющихся с большими файлами.

    вообще, лучшие flash-загрузчики - это SWFUpload и plupload. но насколько я знаю их api, они не поддерживают докачку.

    выход из положения придумали с html5 и File API.

    поскольку юзеров кому это нужно немного, и вы хотите реализовать все в браузере,
    то на вашем месте я бы решил проблему следующим образом:
    сделал бы ActiveX-компонент (но вы понимаете, какой браузер при этом придется использовать),
    и в нем реализовал бы весь функционал. уж к WinAPI у вас будет полный доступ, а значит сможете и с файлами делать все,
    что захотите (например читать его с какого-нибудь offset).

    но в любом случае, вам придется много допиливать.
    подобные готовые решения используются на порталах вроде mail.ru, youtube и широкой публике не доступны.

    SWFUpload именно и используется на youtube, но я уверен, что не в версии из коробки.
    Поинтересуйтесь на его форуме о докачке: http://groups.google.com/group/swfupload.
    Форум не сильно живой, саппорт хромает.

    У Plupload поживей отклик на вопросы юзеров.

    и немного уточните вопрос - какая ОС на клиентских машинах, что на сервере. есть ли службы какие-нибудь.
    просто при таких объемах грузить через браузер - не самое лучшее решение.
    плюс к этому вы работу с файлом должны организовать как на стороне клиента, так и на стороне сервера.
     
    casher нравится это.
  5. Casper_R

    Casper_R Создатель

    Регистр.:
    3 май 2007
    Сообщения:
    85
    Симпатии:
    25
    для таких объемов самое то - nginx, а с файлами копай сюда - http://www.grid.net.ru/nginx/upload.ru.html. на хабре видел посты и о возможности докачки.
     
    casher нравится это.
  6. casher

    casher

    Регистр.:
    24 фев 2008
    Сообщения:
    168
    Симпатии:
    17
    Всё добро крутится на впске, чистый апач. У юзеров у всех винды, возможно пару макосей.
    Вобщем пока остановился на JFileUpload, как самом простом/быстом способе реализации задачи. Если апач не будет справляться, поставлю nginx.
    ЗЫ спасибо за помощь :)
     
  7. komyak

    komyak

    Регистр.:
    4 фев 2009
    Сообщения:
    482
    Симпатии:
    183
  8. Casper_R

    Casper_R Создатель

    Регистр.:
    3 май 2007
    Сообщения:
    85
    Симпатии:
    25
    товарищу нужно загружать НА хост, а не С него.
     
Статус темы:
Закрыта.