LINUX.ORG.RU

Обработка загружаемого файла до окончания загрузки


0

1

Пример - ютуб. Только браузер начинает передавать файл на сервер, сразу же начинается обработка загружаемого видео и даже показываются кадры видео в браузере. В связке апач+пхп скрипт начинает исполняться только после того, как файл полностью загружен, инициализирован массив $_FILES. Какие средства применяются для реализации сабжа? Может, у кого есть какие идеи? Меня этот вопрос очень интересует.

★★

Ответ на: комментарий от bga_

Не вполне понятно, как именно будут тягаться кадры. Откуда мы узнаем имя файла на стороне сервера?

azure ★★
() автор топика

Похоже, что юзают какой-то самописный плагин к Апачу, который кроме приёма данных, может параллельно передавать и прогресс, и прочие данные.

karbofos
()
Ответ на: комментарий от azure

оно приходит первее всего. ртм form-data/multipart

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

но я же сказал что js может читать файл на стороне клиента даже никуда не передавая. и распарсить твой avi на кадры по крайней мере ключевые

bga_ ★★★★
()

Я как-то видел решение на плеше.

Плешь передаёт файл серией постов, а на сервере он собирается в один файл.

r_asian ★☆☆
()

Первая идея. Понять, что парсинг форм по мере поступления данных - событийно-ориентированная задача.

Вторая идея - понять, что похапе на события не заточен, и сделать на более подходящем языке. С апачем и похапе сразу советую провалиться в ад.

Например на ноде будет как-то так: http://stackoverflow.com/questions/5323291/node-formidable-and-a-simple-progr... . Пример для прогрессбара, но сами данные вытянуть не проблема.

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

скорее через вебсокет/флешсокет чтобы не делать тонны подключений

При загрузке конкретно этой страницы было сделано 43 подключения.

#request# GET http://www.linux.org.ru/forum/web-development/6316501?lastmod=1306542167225
GET /forum/web-development/6316501?lastmod=1306542167225
#request# GET http://www.linux.org.ru/common.css
#request# GET http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js
#request# GET http://www.linux.org.ru/js/head.js
#request# GET http://www.linux.org.ru/js/addComments.js
#request# GET http://www.linux.org.ru/js/lor.js
#request# GET http://www.linux.org.ru/js/jquery.corner.js
GET /common.css
GET /js/head.js
GET /js/addComments.js
GET /js/lor.js
GET /ajax/libs/jquery/1.4.1/jquery.min.js
#request# GET http://www.linux.org.ru/tango/combined.css
#request# GET http://www.linux.org.ru/tango/tango-dark.css
GET /js/jquery.corner.js
GET /tango/combined.css
GET /tango/tango-dark.css
#request# GET http://www.linux.org.ru/tango/tango-swamp.css
#request# GET http://www.linux.org.ru/img/logout.png
#request# GET http://www.linux.org.ru/photos/39435:-360246694.png
#request# GET http://www.linux.org.ru/img/normal-star.gif
#request# GET http://www.linux.org.ru/photos/70352:397296891.jpg
#request# GET http://www.linux.org.ru/photos/71543:1067370842.jpg
#request# GET http://www.linux.org.ru/photos/21116:-2084017265.jpg
#request# GET http://www.linux.org.ru/img/grey-star.gif
#request# GET http://www.linux.org.ru/photos/40205:2047834278.png
#request# GET http://www.linux.org.ru/photos/70899:1358054296.jpg
#request# GET http://www.linux.org.ru/photos/56819:-1095794402.jpg
#request# GET http://top100-images.rambler.ru/top100/banner-88x31-rambler-black2.gif
GET /tango/tango-swamp.css
GET /img/logout.png
GET /photos/39435:-360246694.png
GET /img/normal-star.gif
GET /photos/70352:397296891.jpg
GET /photos/71543:1067370842.jpg
GET /photos/21116:-2084017265.jpg
GET /img/grey-star.gif
GET /photos/40205:2047834278.png
GET /photos/70899:1358054296.jpg
GET /photos/56819:-1095794402.jpg
GET /top100/banner-88x31-rambler-black2.gif

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

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

Не подключений, а запросов. HTTP 1.1 не на каждый запрос обязательно делает подключение

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