За последние 24 часа нас посетили 16902 программиста и 1291 робот. Сейчас ищут 1475 программистов ...

Трэкинг процесса загрузки файла на php сервер.

Тема в разделе "Прочие вопросы по PHP", создана пользователем Danilka, 1 фев 2009.

  1. Danilka

    Danilka Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Всем доброго времени суток.

    При разработке очередного проекта столкнулся с проблемой. При отправке файла с машины пользователя на сервер, ему нужно показать процесс загрузки. То есть не просто марающий .gif, а актуальную информацию о количестве отправленных байт и процент от полной загрузки. Может даже рассчитать время, но суть не в этом.
    После небольшой пробежки по ресурсам выяснил, что стандартный php до версии 5.2 этого сделать в принципе не может. Начиная с версии 5.2 в php присутствует функция upload_progress_meter_get_info(), с ней проблем никаких не возникает.
    Но php 5.2 к сожалению мне не доступен. Дело в том, что на сервере установлен Plesk8 который не даёт сделать ни шагу вправо ни влево. Соответственно я также не могу установить фикс(http://pdoru.from.ro/) в сам php, который помогает решить эту проблему. Так как он требует перестановку самого php, а не просто добавление модуля.
    Где-то наткнулся на идею реализации загрузки с помощью cgi скрипта и последующей передачи файла в php, но так и не понял как это реализовать.

    Может кто-то сталкивался с подобной проблемой и может подсказать?
    Заранее спасибо.
     
  2. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    swfupload.org
     
  3. Danilka

    Danilka Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Не, флеш тоже не катит.

    На самом деле я разобрался с пыхом и таки обновил его до 5.2.что-то там. Но к моему великому удивлению никакие новые фичи просто так не работают.
    Ковыряюсь сейчас с модулями.
    Если кто в курсе, подскажите.
     
  4. модуль называется php_uploadprogress
     
  5. Danilka

    Danilka Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Да, уже разобрался. Просто везде все кричали, что php 5.2 всё поддерживает и там никаких запарок нет. А по факту всё оказалось совсем не так.
    Вот кстати ссылка на модуль: http://pecl.php.net/package/uploadprogress/
     
  6. heapKiller

    heapKiller Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    95
    Симпатии:
    0
    Какой в попенгаген прогресс... Читай спецификацию HTTP. Можно сделать если файл хреначить на куски и эти куски отправлять отдельными post - минус если время отзыва большое сильно увеличится время загрузки. Вся байда типа флэша показывает не количество реально принятое и обработанное сервером а количество ушедшего от клиента.
     
  7. heapKiller, заткнись, а?
     
  8. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    Danilka
    Самое правильное решение Flash. Опыт, опыт и ещё раз опыт. На любом хостинге, где вы не можете что-либо сделать с PHP вас пошлют, к тому же этот upload progress реально ещё не доделан, обсуждения его доделки постоянно проскальзывают на внутреннем листе. Flash нельзя тока если вы работаете на 386 компе с монохромным монитором. Если причуда заказчика - шлите на йух. Если начальство - поинтересуйтесь - им ехать или хернёй страдать?
     
  9. Danilka

    Danilka Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    На самом деле всё немного проще.
    Хстинг - дэдик, так что можно развлекаться сколько угодно. Просто не хотелось всеми прелистями плеска жертвовать из-за одного прогрессбара. (хотя мемкеша не стало, после апдейта, но это уже другая песня).
    Начальство тут ни при чём.
    Просто проект замороченый и везде обошлись без флеша, одним jquery. Было бы как-то глупо после всей этой обходной работы вешать флеш на обычный файлапловд. Просто за совместимость очень боремся. Даже (изнасиловали труп) и заставили всё работать в шестом експлорере. Это я к тому, что добавлять требования к юзеру в виде шлеша не вариант. (хоть он и есть почти у всех)
    О чём heapKiller я вообще не понял. Естественно флеш на клиентской части не покажет сколько дошло до сервера. Но я не думаю, что дойдёт больше, чем отправлено ;)
    В результате на серваке всё работает. Теперь пытаюсь на рабочем компьютере под виндой эту беду запустить. Скачал какую-то .dll'ку (http://dllcentral.com/php_uploadprogress.dll), но толку от неё пока нет.
     
  10. Danilka

    Danilka Активный пользователь

    С нами с:
    8 ноя 2007
    Сообщения:
    192
    Симпатии:
    0
    Погодите секу, я чегот не понял. На страничке http://pecl.php.net/package/uploadprogress в депендент листе до версии 9.1 ничего не написано. Не значит ли это, что им всё-равно на версию php?
    флоппик, спасибо за dll, сейчас скачаю, попробую.
    О, Ваша заработала, спасибо огромное!