Я сталкивался с подобной проблемой раньше.
Не совсем уверен, что это может соответствовать вашей проблеме, но я пытался документировать все, чтобы быть уверенным, что даю «безопасные» подсказки.
Жестокий ответ на ваш вопрос, я думаю, это НЕТ, потому что директивы, которые вы указываете в php-fpm.conf
, в большинстве случаев не могут быть изменены с ini_set()
, а set_time_limit
- это почти не более чем удобная оболочка на ini_set()
.
set_time_limit
должен только "перезаписать" директиву max_execution_time
, потому что
они влияют только на время выполнения самого скрипта
(специальное примечание содержится в официальной документации ).
С другой стороны, request_terminate_timeout
относится к FPM, поэтому мы говорим об уровне управления процессом здесь:
следует использовать, когда опция ini 'max_execution_time' не останавливается
выполнение скрипта по какой-то причине.
Итак, чтобы попытаться ответить на вопрос, я думаю, проблема в том, что вы пытаетесь смешать что-то, обрабатываемое FPM (request_terminate_timeout
), и то, что обрабатывается самим PHP (max_execution_time
).
Использование max_execution_time вместо request_terminate_timeout (но использование его с реальной, максимальной верхней границей) должно решить проблему.
В описании max_execution_time
в официальной документации есть подсказка об этой распространенной проблеме, а именно:
Ваш веб-сервер может иметь другие конфигурации тайм-аута, которые также могут
прервать выполнение PHP. Apache имеет директиву Timeout, а IIS имеет
Функция тайм-аута CGI. Оба по умолчанию до 300 секунд. Смотрите ваш веб-сервер
документация для конкретных деталей.
Примечание. Некоторые переменные в этом уравнении могут даже зависеть от веб-сервера (пример: время ожидания чтения).