Помощь - Поиск - Пользователи - Календарь
Полная версия: Lighttpd и upload progress bar - замучались
Онлайн-форум hostobzor.ru > Архив (темы до 1.06.2015). Только для чтения. > Коммерческий хостинг. Общие форумы > Общие вопросы
Scorpion7
Пытаемся сделать полосу статуса загрузки файла на сервер. В версии lighttpd 1.5 pre есть нужный модуль, mod_uploadprogress
http://trac.lighttpd.net/trac/wiki/Docs%3AModUploadProgress
http://blog.lighttpd.net/articles/2006/08/...rogress-is-back
но это pre версия, на сервере стоит 1.4.13. Есть ли вариант прикрутить этот модуль к старой версии?
Или есть другие варианты, не хуже по скорости и нагрузке?
Silencer
Других вариантов в гугле навалом. На перле, на пхп.
Scorpion7
Silencer подскажите хоть один вариант на пхп без перла?
Вы считаете, разница при использовнии скриптов в сравнении со средствами веб-сервера не будет заметной?
Silencer
Цитата(Scorpion7 @ 09.05.2007, 04:36) *

Silencer подскажите хоть один вариант на пхп без перла?
Вы считаете, разница при использовнии скриптов в сравнении со средствами веб-сервера не будет заметной?


На совсем чистом пхп не подскажу. Ибо писал сам и на заказ.

Разница в производительности наверное будет, но - у вас речь о СОТНЯХ параллельных закачек?
Scorpion7
Проблема в том, что все эти скрипты (десяток пробовали) расчитаны на apache. На lighttpd они нормально никак не хотят работать.

Цитата
Разница в производительности наверное будет, но - у вас речь о СОТНЯХ параллельных закачек?

Близко к тому.
Silencer
Цитата(Scorpion7 @ 09.05.2007, 16:18) *

Проблема в том, что все эти скрипты (десяток пробовали) расчитаны на apache. На lighttpd они нормально никак не хотят работать.
Близко к тому.


А под лайти в CGI или FastCGI режиме пробовали?

Апач + PHP-CGI полсотни одновременных закачек держит нормально, больше у нас просто не было.
Scorpion
Silencer конечно пробовали, безрезультатно.
В общем проблема оказалось именно в lighttpd.
Вообще не удалось найти ни одного решения, работающего под lighttpd.
Уже есть желание поставить версию 1.5, еще бы знать насколько она стабильна и какие в ней баги.
Silencer
Цитата(Scorpion @ 10.05.2007, 15:07) *

Silencer конечно пробовали, безрезультатно.


Я имел ввиду в каком из двух вариантов пробовали? В CGI по идее должно работать.
Scorpion
Пробовали в обоих. Проблема там, насколько я понял, в другом по сравнению с Апачи кэшированию файлов.
Silencer
Вообще наиболее производительным вариантом будет совсем отдельный скрипт, не завязанный на вебсервер.
Но по моему опыту работы с файлообменником, сотни одновременных закачек - это оооооочень оптимистично smile.gif
Scorpion7
Цитата
отдельный скрипт, не завязанный на вебсервер.

А можно подробнее, это как? smile.gif
Silencer
Цитата(Scorpion7 @ 11.05.2007, 18:18) *

А можно подробнее, это как? smile.gif


Ну как, пишется нечто типа маленького вебсервера, умеющего только POST принимать и раскладывать. Правда возни много smile.gif
У нас стоит Apache+php-cgi для приема файлов. Не кашляет вроде пока.
Scorpion7
Вопрос был решен с помощью установки lighttpd 1.5 на другой порт.

Обозначилась другая проблема.
При заливке файлов около 400 МБ все начинает умирать. Даже не происходит редиректа на страницу со сылкой. Похоже, что сервер просто ложится. Я обратил внимание что lighttpd при аплоаде создает файлы в tmp папке размерами по 1 МБ. Непонятно, что он делает с ними дальше, переносит или копирует. Видимо что-то нехорошее, потому что ложится сервер и все сайты на нем, секунд на 30-40-50.
Silencer
Цитата(Scorpion7 @ 16.05.2007, 22:35) *

Вопрос был решен с помощью установки lighttpd 1.5 на другой порт.

Обозначилась другая проблема.
При заливке файлов около 400 МБ все начинает умирать. Даже не происходит редиректа на страницу со сылкой. Похоже, что сервер просто ложится. Я обратил внимание что lighttpd при аплоаде создает файлы в tmp папке размерами по 1 МБ. Непонятно, что он делает с ними дальше, переносит или копирует. Видимо что-то нехорошее, потому что ложится сервер и все сайты на нем, секунд на 30-40-50.


Напишите свой скрипт загрузки и рисования прогресса, шо вы мучаетесь smile.gif
Scorpion7
да написали мы уже свои скрипты, кто ж их за нас писать будет )
но мы не можем написать свой веб-сервер.
здесь вопрос по lighttpd, как он заливает файлы, а именно кэширует.
Silencer
Цитата(Scorpion7 @ 16.05.2007, 23:21) *

да написали мы уже свои скрипты, кто ж их за нас писать будет )
но мы не можем написать свой веб-сервер.
здесь вопрос по lighttpd, как он заливает файлы, а именно кэширует.


Я имел ввиду не целиком вебсервер писать, а свой скрипт под лайти наваять.
Вот сейчас из чисто научного интереса проверил - php-cgi скрипт запущенный под lighttpd mod_cgi нормально получает POST данные с потока php://stdin. Остальное - дело техники.
Scorpion7
или я чего-то не понимаю, или мы о разных вещах говорим.
Вы предлгаете написать еще один mod_uploadprogress? Не думаю что много народу на это способно. Этот мод трудно дается разработчику lighttpd.
Сейчас у нас как бы все работает. Стандартным php скриптом и средствами lighttpd. Проще некуда. Проблема появляется именно на больших файлах, поэтому меня и интересует структура и действие кэширования сервера. Вообще не понимаю смысла что либо переписывать, как и что именно тут можно еще улучшить?
Silencer
Цитата(Scorpion7 @ 17.05.2007, 01:39) *

или я чего-то не понимаю, или мы о разных вещах говорим.
Вы предлгаете написать еще один mod_uploadprogress? Не думаю что много народу на это способно. Этот мод трудно дается разработчику lighttpd.
Сейчас у нас как бы все работает. Стандартным php скриптом и средствами lighttpd. Проще некуда. Проблема появляется именно на больших файлах, поэтому меня и интересует структура и действие кэширования сервера. Вообще не понимаю смысла что либо переписывать, как и что именно тут можно еще улучшить?


Нет, я не имел ввиду модуль для сервера. Я имел ввиду CGI скрипт, который будет принимать через lighttpd файлы и отдавать данные прогресс индикатору. По моему, это гораздо более надежнее, чем сырой mod_uploadprogress и к тому же позволяет более тонко управлять процессом.

Ничего сложного в этом не вижу, любой средний программист на Perl или PHP справится. Взять RFC на multipart/form-data и написать обработчик. Данные брать со stdin.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2025 Invision Power Services, Inc.