Увеличение максимального времени выполнения скрипта max_execution_time
Если менять max_execution_time в php.ini, то при вызове echo ini_get('max_execution_time'); пишет 0 .
Если ставить вручную в скрипте ini_set('max_execution_time', '5'); , то пишет, что 5. Но скрипт не прекращает работу, если выполнить sleep(15). Так же не работает set_time_limit(5);. В чем дело? Система - ubuntu. Самое интересное, что через openserver на винде все работает.
P.S. Так же изменил во max_execution_time во всех php.ini( для apache2, cli, fpm) - все равно не работает. Может кто знает, как решить проблему?
Ответы (1 шт):
Но скрипт не прекращает работу, если выполнить sleep(15)
Весь фокус в том, что так и должно быть. Об этом сказано в мануале здесь
The set_time_limit() function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system(), stream operations, database queries, etc. is not included when determining the maximum time that the script has been running. This is not true on Windows where the measured time is real.
set_time_limit считает только время затраченное на выполнение скрипта, но не включает внешние вызовы. sleep тоже системный вызов, потому не участвует в подсчёте времени.
Это поведение отличается в windows от всех остальных систем.