PHP-FPM — ограничение времени выполнения, плавная остановка

Поэтому в моем приложении есть некоторые сторонние звонки на веб-сервисы.

Эти службы могут в пиковое время реагировать очень долго, так что значение, которое я определил для request_terminate_timeout на моем PHP-FPM настройка достигнута. Сценарий затем жестоко прерван, и я не могу использовать register_shutdown_function попытаться очистить запрос.

Существуют ли какие-либо настройки PHP / PHP-FPM, о которых я не знаю, которые могли бы ограничить Всего время выполнения запроса? «Изящный» способ обработки завершения PHP-FPM?

  • max_execution_time учитывает только время, проведенное в PHP, что в моем случае не является причиной длительных скриптов
  • С помощью pcntl звонки, для веб-запросов, не кажется такой хорошей идеей.

1

Решение

Для длинных запросов я бы предложил использовать подход cron / stack.

Вопрос, почему он был остановлен, может быть адресован вашему серверу Apache / nginx:

proxy_connect_timeout 500;
proxy_send_timeout 500;
proxy_read_timeout 500;

Кроме того, вы можете использовать их триггеры для обработки ошибок тайм-аута.

0

Другие решения

попробуйте установить 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

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector