Rularea script-uri lungi pe php

Deși script-uri pe termen lung (PHP 5 minute sau mai mult) din diverse motive, este în general considerat nedorit în unele situații poate ajuta. Un exemplu simplu: importul bloc de informații de XML în proprietăți Bitrix 500 și 10.000 de elemente, un timp maxim standard de execuție poate fi suficient - chiar dacă script-ul este executat și pașii, dar poate, de exemplu, să stea pe suportul crearea de indecși.

În acest articol vom considera lungi script PHP rula în apache + Nginx și ia în considerare, de asemenea, restricții browsere.

Primul lucru pe care trebuie verificat - este de configurare php „max_execution_time“ și „session.gc_maxlifetime“ (timpul maxim de execuție și sesiuni de timp, respectiv). Acesta poate fi instalat din htaccess (parametrii sunt stabilite în secunde):

precum și direct din script-ul php:

sau, desigur, de la php.ini

Cu toate acestea, chiar dacă setați o valoare mare este max_execution_time, în timpul unei Nginx ar putea, în cazul în care timpul nu a expirat încă, este posibil să primiți un mesaj de eroare de genul:

504 eroare Gateway Timeout folosind Nginx

Această situație poate fi corectată prin editarea Nginx fișier de configurare (pe sistemele Debian este aici - /etc/nginx/nginx.conf):

Pentru a testa setările mi-a descris, voi menționa aici două scripturi - un simplu ajax pagina de start-up și primirea folosind (acest lucru poate fi important, deoarece setările browser-ului poate varia în funcție de pagini simple și XHR mijloace).


Script-ul folosind ajax: