Welcome! Log In Create A New Profile

Advanced

Как сделать чтобы nginx не ждал завершения работы бэкэнда (в частности завершение работы тяжелого PHP скрипта)

Posted by NT Man 
Как сказать nginx-у, чтобы он не ждал завершения работы бэкэнда?
Пример:

<?php
ob_start();
echo('test message!');
ob_end_flush();
//Тут надо как то сказать nginx,
//чтобы он не ждал завершения бэкенда,
//и отдал клиенту то что у него есть.
sleep(20);
echo('You should not see this message!');
?>


Т.е. клиент инициировал передачу GET/POST данных PHP их распарсил и
заполнил внутренние структуры и сказал nginx-у не жди когда я закончу
выполнятся скажи браузеру, что все ok. После этого делается чтонибудь
тяжелое с передачей прогресса по comet соединению.
fastcgi_finish_request();

Правда, работать будет только в случае, если php собран c fpm и
работает по FastCGI.

2011/7/1 NT Man <mikhail.v.gavrilov@gmail.com>:
> Как сказать nginx-у, чтобы он не ждал завершения работы бэкэнда?
> Пример:
>
> <?php
>        ob_start();
>        echo('test message!');
>        ob_end_flush();
>        //Тут надо как то сказать nginx,
>        //чтобы он не ждал завершения бэкенда,
>        //и отдал клиенту то что у него есть.
>        sleep(20);
>        echo('You should not see this message!');
> ?>
>
>
> Т.е. клиент инициировал передачу GET/POST данных PHP их распарсил и
> заполнил внутренние структуры и сказал nginx-у не жди когда я закончу
> выполнятся скажи браузеру, что все ok. После этого делается чтонибудь
> тяжелое с передачей прогресса по comet соединению.



--
Sincerely,
Max Baryshnikov
http://us2.php.net/manual/en/install.fpm.php :

fastcgi_finish_request() - special function to finish request and flush all
> data while continuing to do something time-consuming (video converting,
> stats processing etc.);


2011/7/1 NT Man <mikhail.v.gavrilov@gmail.com>
>
> Как сказать nginx-у, чтобы он не ждал завершения работы бэкэнда?
> Пример:
>
> <?php
> ob_start();
> echo('test message!');
> ob_end_flush();
> //Тут надо как то сказать nginx,
> //чтобы он не ждал завершения бэкенда,
> //и отдал клиенту то что у него есть.
> sleep(20);
> echo('You should not see this message!');
> ?>
>
>
> Т.е. клиент инициировал передачу GET/POST данных PHP их распарсил и
> заполнил внутренние структуры и сказал nginx-у не жди когда я закончу
> выполнятся скажи браузеру, что все ok. После этого делается чтонибудь
> тяжелое с передачей прогресса по comet соединению.


--
Best regards,
Bruce Weirdan mailto:
weirdan@gmail.com
Спасибо за ответы.
А в чем отличие fastcgi_finish_request() от fastcgi_disconnect(); ?
Нашел это тут http://www.devnetwork.net/viewtopic.php?f=50&t=81858
Разница в том, что вы нашли какой-то неподдерживаемый патч, который делает
то же самое, что и стандартный fastcgi_finish_request()

2011/7/2 NT Man <mikhail.v.gavrilov@gmail.com>

> Спасибо за ответы.
> А в чем отличие fastcgi_finish_request() от fastcgi_disconnect(); ?
> Нашел это тут http://www.devnetwork.net/viewtopic.php?f=50&t=81858




--
Best regards,
Bruce Weirdan mailto:
weirdan@gmail.com
Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 155
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready