Вопрос прост, я хотел бы проверить базу данных, чтобы обслуживать настроенный контент посетителю сайта, но отказоустойчивость и обслуживать общую страницу, если эта функция занимает более 800 мс для выполнения. (Целевое время для ответа сервера составляет 1000 мс).
Я видел функцию set_time_limit , однако в качестве аргумента это занимает целые числа в секундах.
Мой вопрос: есть ли что-то подобное, которое может использоваться со значениями менее 1 секунды?
Я ищу что-то вроде:
void set_time_limit_ms ( int $milliseconds ) set_time_limit_ms (800)
не существует. вы просто можете эмулировать его с помощью функции галочки:
declare(ticks=1); // or more if 1 takes too much time $start = microtime(1); register_tick_function(function () use ($start) { (microtime(1) - $start < 0.8) or die(); });
Вы не сможете использовать эту функцию, чтобы предотвратить запрос, который работает дольше, чем вы ожидали. Это измеряет только время выполнения скрипта. Вот немного из руководства.
Функция set_time_limit () и директива конфигурации max_execution_time влияют только на время выполнения самого скрипта. Любое время, затрачиваемое на активность, которое происходит вне выполнения сценария, например системные вызовы с использованием system (), потоковые операции, запросы к базе данных и т. Д., Не включается при определении максимального времени выполнения сценария. Это не относится к Windows, где измеренное время реально.
Да, я часто использую microtime. видеть
http://php.net/manual/en/function.microtime.php
<?php $time_start = microtime(true); // Sleep for a while usleep(100); $time_end = microtime(true); $time = $time_end - $time_start; echo "Did nothing in $time seconds\n"; ?>