File upload progress

142 views
Skip to first unread message

Rauan Maemirov

unread,
Apr 25, 2008, 5:09:29 PM4/25/08
to highload-php-ru
В Apache+php реализовал прогресс бар с помощью apc (rfc1867).

Но теперь в nginx+php-fpm это не работает. Может я что-то не так
сделал, или это технически невозможно?

Rauan Maemirov

unread,
Apr 25, 2008, 8:49:11 PM4/25/08
to highload-php-ru
Чтобы узнать upload статус периодически пускаю ajax-запрос.

В респонс приходит:
411 Length Required

Хотя,

Response Headers
Server nginx/0.6.29
Date Sat, 26 Apr 2008 00:40:36 GMT
Content-Type text/html; charset=utf-8
Transfer-Encoding chunked
Connection keep-alive
X-Powered-By PHP/5.2.5
Content-Encoding gzip
Vary Accept-Encoding

Request Headers
Host http://my.site.com/
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9b4)
Gecko/2008030714 Firefox/3.0b4
Accept text/javascript, text/html, application/xml, text/xml, */*
Accept-Language ru,en-us;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
X-Requested-With XMLHttpRequest
X-Prototype-Version 1.6.0.2
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Referer http://my.site.com/
Content-Length 33
Cookie __utma=...

Dmitry Medvedev

unread,
Apr 26, 2008, 4:45:01 AM4/26/08
to highloa...@googlegroups.com
nginx буферизует запрос клиента (соответственно вместе с файлом), и
только потом отдает его к backend

Rauan Maemirov

unread,
Apr 26, 2008, 5:55:43 AM4/26/08
to highload-php-ru
А это никак не решается?

http://wiki.codemongers.com/NginxHttpUploadProgressModule

Написано, что для nginx и lighttpd. Подходит ли это для php?

Dmitry Medvedev

unread,
Apr 26, 2008, 6:08:25 AM4/26/08
to highloa...@googlegroups.com
Я бы посоветовал для загрузки файлов использовать apache. Есть еще
вариант контролировать загрузку средставми flash+js (например
http://swfupload.org/ ).
Либо попробовать вышеупомянутый модуль для nginx, только обратите
внимание на пункт в его описании "WARNINGS: it is not intended to be
deployed on production systems."

Sergej Kandyla

unread,
Apr 29, 2008, 4:12:51 AM4/29/08
to highloa...@googlegroups.com
Dmitry Medvedev wrote:
>
> Я бы посоветовал для загрузки файлов использовать apache. Есть еще
> вариант контролировать загрузку средставми flash+js (например
> http://swfupload.org/ ).
> Либо попробовать вышеупомянутый модуль для nginx, только обратите
> внимание на пункт в его описании "WARNINGS: it is not intended to be
> deployed on production systems."

на nginx-ru был несколько месяцев назад такой топик. Кажется именно этим
модулем народ и разруливал картину.

>> А это никак не решается?
>>
>> http://wiki.codemongers.com/NginxHttpUploadProgressModule
>>
>> Написано, что для nginx и lighttpd. Подходит ли это для php?
>>
>> On 26 апр, 14:45, Dmitry Medvedev <dmi...@fapu.ru> wrote:
>>
>>> nginx буферизует запрос клиента (соответственно вместе с файлом), и
>>> только потом отдает его к backend
>>>
>>>
>>>> В Apache+php реализовал прогресс бар с помощью apc (rfc1867).
>>>> Но теперь в nginx+php-fpm это не работает. Может я что-то не так
>>>> сделал, или это технически невозможно?
>>>>
>> >
>
>


--
Wbr, SK

Sergej Kandyla

unread,
Apr 29, 2008, 4:24:31 AM4/29/08
to highloa...@googlegroups.com
Sergej Kandyla wrote:
>
> Dmitry Medvedev wrote:
>>
>> Я бы посоветовал для загрузки файлов использовать apache. Есть еще
>> вариант контролировать загрузку средставми flash+js (например
>> http://swfupload.org/ ).
>> Либо попробовать вышеупомянутый модуль для nginx, только обратите
>> внимание на пункт в его описании "WARNINGS: it is not intended to be
>> deployed on production systems."
>
> на nginx-ru был несколько месяцев назад такой топик. Кажется именно
> этим модулем народ и разруливал картину.
извиняюст за неточность: модулем для nginx - NginxHttpUploadProgressModule

Andrei Nigmatulin

unread,
Apr 29, 2008, 12:03:10 PM4/29/08
to highloa...@googlegroups.com
On Saturday 26 April 2008 14:08, Dmitry Medvedev wrote:
> Я бы посоветовал для загрузки файлов использовать apache. Есть еще
> вариант контролировать загрузку средставми flash+js (например
> http://swfupload.org/ ).
> Либо попробовать вышеупомянутый модуль для nginx, только обратите
> внимание на пункт в его описании "WARNINGS: it is not intended to be
> deployed on production systems."

В примере в конфиге указывается:

# reserve 1MB under the name 'proxied' to track uploads
upload_progress proxied 1m;

Это значит, что выделяется 1 мегабайт shared mem для всех "progress id". Если
память для них кончается (или кто-то хитрый этому способствует), сервер
прекратит принимать POSTы и будет выдавать 503:

node = ngx_slab_alloc_locked(shpool, n);
if (node == NULL) {
ngx_shmtx_unlock(&shpool->mutex);
return NGX_HTTP_SERVICE_UNAVAILABLE;
}

Я бы не рискнул его использовать в production.


--
Andrei Nigmatulin
GPG PUB KEY 6449830D

Now I lay me down to sleep(3)
Pray the OS my core to keep
If I die before I wake
Pray the Disk my core to take

Rauan Maemirov

unread,
Apr 29, 2008, 4:28:22 PM4/29/08
to highload-php-ru
Да-да. Я уже это понял . ))
Переделал с использованием swfupload.

On Apr 29, 10:03 pm, Andrei Nigmatulin <andrei.nigmatu...@gmail.com>
wrote:
Reply all
Reply to author
Forward
0 new messages