Поэтому в моем приложении есть некоторые сторонние звонки на веб-сервисы.
Эти службы могут в пиковое время реагировать очень долго, так что значение, которое я определил для request_terminate_timeout
на моем PHP-FPM настройка достигнута. Сценарий затем жестоко прерван, и я не могу использовать register_shutdown_function
попытаться очистить запрос.
Существуют ли какие-либо настройки PHP / PHP-FPM, о которых я не знаю, которые могли бы ограничить Всего время выполнения запроса? «Изящный» способ обработки завершения PHP-FPM?
max_execution_time
учитывает только время, проведенное в PHP, что в моем случае не является причиной длительных скриптовpcntl
звонки, для веб-запросов, не кажется такой хорошей идеей.Для длинных запросов я бы предложил использовать подход cron / stack.
Вопрос, почему он был остановлен, может быть адресован вашему серверу Apache / nginx:
proxy_connect_timeout 500;
proxy_send_timeout 500;
proxy_read_timeout 500;
Кроме того, вы можете использовать их триггеры для обработки ошибок тайм-аута.
попробуйте установить max_execution_time и поймать ошибку
<?php
function shutdown()
{
$a=error_get_last();
if($a==null) {
echo "No errors";
} else {
gracefully_shutdown();
}
}
register_shutdown_function('shutdown');
ini_set('max_execution_time', 10 ); //set to 10 seconds
// do some works here
do_some_works();
?>
посмотрите на эту ссылку http://www.php.net/manual/en/function.set-error-handler.php#106061