В настоящее время я пытаюсь увеличить максимальное время выполнения сценария PHP и не могу понять, почему Apache всегда возвращает пустой ответ через 60 секунд.
Я уже увеличил максимальное время выполнения PHP, максимальный размер поста и максимальный размер загрузки. Я проверил настройки Tweak и настройки Apache, чтобы увидеть, было ли что-то, связанное с максимальным временем выполнения, максимальным временем запроса или таймаутом … Не могу найти ничего.
Может быть, проблема связана с использованием памяти или что-то еще, но я не могу понять это.
У меня есть сторонний модуль Varnish, и когда я пытаюсь выполнить мой запрос с помощью Varnish, все работает нормально. В противном случае, если я отключу его (в настоящее время он отключен), apache не сможет вернуть мне ответ. Я получаю это от Google Chrome:
Данные не получены
Код ошибки: ERR_EMPTY_RESPONSE
PHP-скрипт это:
<?php
$timeInSeconds = 70;
$start = microtime(true);
$end = $start + $timeInSeconds;
$diff = $end - $start;
echo 'start: '.$start.'<br />';
while ($start < $end)
{
$start = microtime(true);
}
echo 'end: '.$end.'<br />';
echo 'difference: '.$diff;
С помощью командной строки все работает.
Идти к WHM >> Service Manager >> Конфигурация Apache >> Глобальная конфигурация (Я не знаю правильных названий меню, потому что мой WHM на португальском языке) и изменить значение времени ожидания.
Можете ли вы проверить это с помощью следующего скрипта
это очистит буфер вывода на экран во время работы
<?php
$timeInSeconds = 70;
$start = microtime(true);
$end = $start + $timeInSeconds;
$diff = $end - $start;
echo 'start: '.$start.'<br />';
while ($start < $end)
{
$start = microtime(true);
echo $start;
ob_flush();
flush();
sleep(1);
}
echo 'end: '.$end.'<br />';
echo 'difference: '.$diff;
Для получения дополнительной информации о флеше:
http://php.net/manual/en/function.flush.php