Хотя запуск долгих скриптов на php (от 5 мин и более) по разным причинам обычно считается нежелательным, в некоторых ситуациях это может выручить. Простой пример: при xml-импорте инфоблока в битриксе с 500 свойствами и 10000 элементами, стандартного максимального времени выполнения может быть недостаточно - хотя скрипт и выполняется по шагам, но может, например, зависнуть, на создании вспомогательных индексов.
[spoiler]
В данной статье рассмотрим запуск долгих php скриптов на apache+nginx и рассмотрим также ограничения браузеров.
PHP
Самое первое, что необходимо проверить - это настройки php "max_execution_time" и "session.gc_maxlifetime" (максимальное время выполнения скрипта и время сессии соответственно). Ее можно установить из htaccess (параметры устанавливаются в секундах):
а также непосредственно из php скрипта:
или, конечно же, из php.ini
NGINX
Однако, даже если установить большое значение max_execution_time, при установленном nginx, если время еще не истекло, вы можете получить сообщение об ошибке подобное этому:
504 Gateway Timeout error using Nginx
Данную ситуацию можно исправить, отредактировав файл конфигурации nginx (на системах Debian находится здесь - /etc/nginx/nginx.conf):
Ограничения браузера
Но и это еще не все. У браузеров также есть свои ограничения по времени на получение страниц и у разных браузеров они отличаются. Но это также поправимо, и проще всего эта настройка меняется в браузере Mozilla Firefox: нужно зайти в расширенные настройки введя в адресной строке "about:config", затем найти по поиску значение "network.http.connection-timeout", в котором, как и везде, можно установить значение максимального времени получения страницы в секундах.
Скрипты тестирования максимального времени выполнения скрипта
Для тестирования описанных мной настроек, я приведу здесь два скрипта - простой запуск страницы и получение с использованием ajax (это может быть важно, т.к. настройки браузера могут отличаться для получения простых страниц и средствами XHR).
Простой скрипт:
Скрипт с применением ajax:
[spoiler]
В данной статье рассмотрим запуск долгих php скриптов на apache+nginx и рассмотрим также ограничения браузеров.
PHP
Самое первое, что необходимо проверить - это настройки php "max_execution_time" и "session.gc_maxlifetime" (максимальное время выполнения скрипта и время сессии соответственно). Ее можно установить из htaccess (параметры устанавливаются в секундах):
|
|
NGINX
Однако, даже если установить большое значение max_execution_time, при установленном nginx, если время еще не истекло, вы можете получить сообщение об ошибке подобное этому:
504 Gateway Timeout error using Nginx
Данную ситуацию можно исправить, отредактировав файл конфигурации nginx (на системах Debian находится здесь - /etc/nginx/nginx.conf):
|
Ограничения браузера
Но и это еще не все. У браузеров также есть свои ограничения по времени на получение страниц и у разных браузеров они отличаются. Но это также поправимо, и проще всего эта настройка меняется в браузере Mozilla Firefox: нужно зайти в расширенные настройки введя в адресной строке "about:config", затем найти по поиску значение "network.http.connection-timeout", в котором, как и везде, можно установить значение максимального времени получения страницы в секундах.
Скрипты тестирования максимального времени выполнения скрипта
Для тестирования описанных мной настроек, я приведу здесь два скрипта - простой запуск страницы и получение с использованием ajax (это может быть важно, т.к. настройки браузера могут отличаться для получения простых страниц и средствами XHR).
Простой скрипт:
|
Скрипт с применением ajax:
|
23.04.201604:0923.04.2016 04:09:55