|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> WWW
—> lighttpd + mod_uploadprogress
lighttpd + mod_uploadprogress
Автор: irr.
Потребовалось сделать пользователям сайта возможность аплоадить mp3-файлы. Поскольку речь идет о файлах размером 5-10 MB, а скорость соединения у юзеров неизвестно какое, не помешало бы прикрутить и прогресс-бар. Кроме того, хотелось бы получить достаточно простое решение (т.к. и сам сайт простой на банальном php, да и я не веб-разработчик). И еще чтобы все это вертелось на lighttpd :).
Если бы у нас был Apache, а PHP работал бы как его модуль, то проблема легко решалась бы через расширение php5-uploadprogress. Пример в комлекте с этим расширением заводится с пол-оборота, все просто и понятно. Другой вариант - APC + json. Но у нас lighttpd и PHP в режиме fastcgi, и эти решения для него не подходят.
У lighttpd есть свой mod_uploadprogress, но он доступен только в версии 1.5, которая пока еще в разработке и в портах ее нет. Более того, представленное демо этого модуля на домашней страничке lighttpd вообще не работает. Примеры, которые там можно скачать, с собранным вручную lighttpd 1.5 у меня тоже не заработали.
Тем не менее, решение все-таки было найдено. На странице описания mod_uploadprogress упомяналось про патч для версии 1.4.x, который правда ведет себя несколько иначе, но вроде бы уже полгода как стабилен.
Итак, начнем:
# cd /usr/ports/www/lighttpd/
# make patch
# cd work/lighttpd-1.4.*/
| теперь качаем и накладываем патч:
# wget -O mod_uploadprogress.patch \
labs.logic.cz/patches/lighttpd/1.4.x/lighttpd-1.4.23-mod_uploadprogress.patch
# patch -p1 < mod_uploadprogress.patch
| затем выполняем автоматическую пересборку configure:
и наконец собираем порт:
# cd ../../
# make install clean
| Убедимся в успешной сборке и наличии mod_uploadprogress:
# pkg_info -Ex lighttpd
lighttpd-1.4.30_1
# ls /usr/local/lib/lighttpd/ | grep uploadprogress
mod_uploadprogress.a
mod_uploadprogress.la
mod_uploadprogress.so
| Открываем конфиг lighttpd, в секцию server.modules добавляем "mod_uploadprogress", ну и куда-нибдуь в конец пишем:
upload-progress.progress-url = "/progress"
upload-progress.remove-timeout = 30
upload-progress.debug = "enable"
| Перезапускаем lighttpd:
# /usr/local/etc/rc.d/lighttpd restart
| Рабочий пример прогресс-бара удалось найти тут. В нем используется только html + javascript (JQuery).
Признаком того что модуль вообще работает, должны быть следующие повторяющиемся с определенным интервалом строчки в error.log во время аплоадинга:
2010-02-22 15:23:15: (mod_uploadprogress.c.448) (uploadprogress) urls /progress == /progress
2010-02-22 15:23:15: (mod_uploadprogress.c.509) connection is known: 5b4d77867be787ee58f81032dbd84ea1 , sending: { "state" : "uploading", "received" : 14623250, "size" : 71456492}
2010-02-22 15:23:17: (mod_uploadprogress.c.448) (uploadprogress) urls /progress == /progress
2010-02-22 15:23:17: (mod_uploadprogress.c.509) connection is known: 5b4d77867be787ee58f81032dbd84ea1 , sending: { "state" : "uploading", "received" : 30229010, "size" : 71456492}
2010-02-22 15:23:19: (mod_uploadprogress.c.448) (uploadprogress) urls /progress == /progress
2010-02-22 15:23:19: (mod_uploadprogress.c.509) connection is known: 5b4d77867be787ee58f81032dbd84ea1 , sending: { "state" : "uploading", "received" : 45826578, "size" : 71456492}
|
Если при этом не работает прогресс-бар, то здесь уже необходимо работать над совместимостью браузера и java-скриптов. В дальнейшем, чтобы не засорять лог, вывод этой информации можно отключить в конфиге lighttpd, исправив строчку:
upload-progress.debug = "disable"
| Вроде бы не сложно. Но в условиях нехватки информации и отсутствии рабочих примеров - далось не легко. Поэтому решил оформить статью.
размещено: 2010-02-22,
последнее обновление: 2012-01-25,
автор: irr
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
|
Статистика сайта
|
Сейчас на сайте находится: 30 чел.
|
За последние 30 мин было: 78 человек
|
За сегодня было 2416 показов, 590 уникальных IP
|
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
|
Комментарии пользователей [1 шт.]