Запуск довгих скриптів на php
Хоча запуск довгих скриптів на php (від 5 хв і більше) з різних причин зазвичай вважається небажаним, в деяких ситуаціях це може виручити. Простий приклад: при xml-імпорті Інфоблоки у Бітрікс з 500 властивостями і 10000 елементами, стандартного максимального часу виконання може бути недостатньо - хоча скрипт і виконується крок за кроком, але може, наприклад, зависнути, на створенні допоміжних індексів.
У цій статті розглянемо запуск довгих php скриптів на apache + nginx і розглянемо також обмеження браузерів.
Найперше, що необхідно перевірити - це налаштування php "max_execution_time" і "session.gc_maxlifetime" (максимальний час виконання скрипта і час сесії відповідно). Її можна встановити з htaccess (параметри встановлюються в секундах):
а також безпосередньо з php скрипта:
або, звичайно ж, з php.ini
Однак, навіть якщо встановити велике значення max_execution_time, при встановленому nginx, якщо час ще не минув, ви можете отримати повідомлення про помилку подібне до цього:
504 Gateway Timeout error using Nginx
Дану ситуацію можна виправити, відредагувавши файл конфігурації nginx (на системах Debian знаходиться тут - /etc/nginx/nginx.conf):
Для тестування описаних мною налаштувань, я приведу тут два скрипта - простий запуск сторінки і отримання з використанням ajax (це може бути важливо, тому що настройки браузера можуть відрізнятися для отримання простих сторінок і засобами XHR).
Скрипт із застосуванням ajax: