HTTP / 2 Co, kde, proč a kdy ?! - Front-End London

Mám instalaci Magento, která funguje perfektně z pohledu zákazníka. Když se však pokusíte provést dávkové úlohy se správcem, Nginx často ukončí připojení k prohlížeči dříve, což v prohlížeči způsobí chybu „prázdná odpověď ze serveru“. Úkol backendu stále pokračuje uvnitř Apache, dokud není dokončen. PHP je nakonfigurováno s výchozím max_execution_timeout společnosti Magento na 18 000 sekund.

Našel jsem článek, který s tím souvisí, a navrhl jsem použití direktivy "send_timeout" v konfiguraci Nginx. Takže jsem to nastavil na stejnou hodnotu jako max_execution_time 18000 sekund. Pak jsem vytvořil skript PHP, který jednoduše spí po dobu 65 sekund (zdá se, že časový limit je 60 sekund).

Problém nemá jen prohlížeč. Dostanu:

curl: (52) Prázdná odpověď ze serveru

také z cURL. Ve směrnici HTTP nemám žádná další temná konfigurační pravidla Nginx. Každý, kdo má nějakou představu o tom, co se tu může dělat, a jak to zastavit? Trochu se ztrácím.

Navrhoval bych rozdělit dávkový úkol na menší (asi 10 sekund každý) a použít AJAX k obnovení stránky a zobrazení pokroku.

Čekání 60 sekund na odpověď je příliš dlouhé, příliš dlouhé. Čím delší je váš provoz, tím větší je pravděpodobnost selhání.

Rozdělením na menší dávky, pokud dojde k chybě, ztratíte jen zlomek.

  • Souhlasím. Takto ale Magento funguje a bylo navrženo tak, aby fungovalo. A mnoho velkých webů elektronického obchodování po celém světě používá stejnou platformu, a tak to funguje, protože byla prakticky postavena. Podařilo se mi to obejít s cronem tím, že jsem wget zavolal přímo přes backend Apache, takže nginx to v polovině úkolu neřízne. U úkolů iniciovaných prostřednictvím správce uživatelem však nemohu takovou zkratku přijmout.

Zkontrolujte parametry časového limitu fastcgi (/etc/nginx/fastcgi_param.conf).

Nebo zkuste narazit proxy_read_timeout 90; v /etc/nginx.conf.

Pracoval pro vás: Charles Robertson | Chcete nás kontaktovat?