LINUX.ORG.RU

Порекомендуйте, как заливать большие (50 Мб) файлы в веб-приложении!


0

1

Пишем веб-приложение на PHP, нужно заливать большие файлы - метров по 40-50. Подскажите, как это правильнее делать? Просто через PHP - так там надо менять переменные max_input_time, max_execution_time, post_max_size, а также max_file_uploads, что небезопасно на продакшене. Заливать по (S)FTP - не хотят, говорят, надо чтобы можно было браузером. Подскажите, какие ещё есть варианты? Мне больше ничего на ум не приходит :(


Есть флешовые загрузчик, идущие в комплекте с серверными скриптами, которые делают это кусочками.

r_asian ★☆☆
()

надо менять переменные max_input_time, max_execution_time, post_max_size, а также max_file_uploads, что небезопасно на продакшене.

почему?

drBatty ★★
()
Ответ на: комментарий от r_asian

Флэшовые тоже не хотелось бы, потому что флэш не у всех есть. Да и вообще, пусть эти проприерасты сами пользуются своей мертвячиной дырявой!

xl743
() автор топика
Ответ на: комментарий от drBatty

Ну как почему. Например, зависнет пхп-скрипт - и будет в каком-нибудь мёртвом цикле полдня висеть. Я это в php.ini прочёл!

xl743
() автор топика
Ответ на: комментарий от xpahos

Ну он же по-любому должен позволить залить 50 метров. А это долго. Минут 20, думаю, надо дать как минимум. А если скрипты будут по 20 минут крутиться - это ж может быть гемор. По дефолту там 30 сек стоит в php.ini.

xl743
() автор топика

Можно асинхронный фрэймворк для загрузки использовать. Не знаю есть ли такие на пхп.
Например node.js, tornado.

pi11 ★★★★★
()

пусть высылают на дискетах.

а вообще по теме. Это не есть хорошо. Лучше пусть они заливают по ftp.

visual ★★★
()
Ответ на: комментарий от pi11

Например node.js, tornado.

для php такого нет, насколько я понял. Там была в 2009 году какая-то поделка, но вроде как она уже давно загнулась.

xpahos ★★★★★
()
Ответ на: комментарий от GateKeeper

Ух ты, спасибо! Я про такое не знал.

Но переменные в ПХП, как я понимаю, всё равно надо будет устанавливать? Иначе просто непонятно, как оно работать будет.

xl743
() автор топика
Ответ на: комментарий от xl743

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

trashymichael ★★★
()
Ответ на: комментарий от trashymichael
	jQuery('#fileupload').fileupload({
		maxChunkSize: <?php echo Controller_File::short2bytes(ini_get('upload_max_filesize')) ?>,
	});

Вот и вся работа с пыховыми ограничениями.

Проверяли работоспособность в гуглозонде, пушномзвере, ослах 7 и 8. В 9 у нас, как это водится у корпорации бобра, поплыла разметка и нажать кнопку «нАчать» не удалось. А где заработало - работало и с десятикилобайтными инишками и с 4гиговыми исошками опензузи. При ограничении в пыхе в 2метра.

Естественно, 6 осла и прочие древние окаменелые остатки недопереваренной пищи динозавров мы даже не стали тестировать.

GateKeeper ★★
()

А что, разве через вебсокеты еще не организовали пересылку файлов?

Все-таки, единственный альтернативный вебсокетам способ: «резать» файлы на клиенте и пересылать по кусочкам, которые на сервере собирать обратно. Не очень-то удобный способ, да и непонятно, будет он тормозить, или нет (т.е. не захочет ли браузер «запихать» весь файл в оперативку перед тем, как резать его).

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Не тормозило и память не жрало. Лишних 4гиг под исошку не было, но отправилось всё несущественно для таких операций медленней, чем посредством FTP, например.

GateKeeper ★★
()
Ответ на: комментарий от Eddy_Em

Файрфоксовая веб-консоль и отладка в ослике показали, что плагин отправляет «кусочками» (собственно, потому и присутствует у него параметр maxChunkSize).

GateKeeper ★★
()
Ответ на: комментарий от GateKeeper

Спасибо, дружище, буду тестить!

xl743
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.