Autor Zpráva
blazej44800
Profil
Ahojte

Mám Nginx 1.4.4 a PHP 5.5.6. Robím long polling požiadavky. Problém je, že ak zrušil pomocou Ajaxu požiadavku (request.abort()) PHP skript sa neukončí a ďalej sa spracováva (otestované pridaním fcie mail() na koniec skriptu - mail stále príde).

Bojím sa, že pri reálnom trafficu by sa server mohol preťažiť neuzavretými požiadavkami. Samozrejme som skontroloval ignore_user_abort(false); ale bez žiadného výsledku. Je možné, že treba ešte niečo nastaviť v nginx?

      location ~ \.php$ {    
        try_files $uri =404;
        include fastcgi_params;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;  
      }

Vďaka za rady ;)
Davex
Profil
V dokumentaci k funkci ignore_user_abort() se v poznámce píše, že PHP nezjistí ukončení spojení dokud nedojde k odeslání dat klientovi.

Během čekání by mělo stačit pravidelně spouštět flush().

$cekej = 10;
while ($cekej--) {
  sleep(1);
  flush();
}

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: