Возможно ли узнать время, затраченное сервером Apache на загрузку страницы PHP? Есть ли файл журнала, созданный на сервере Apache для каждой страницы, работающей под сервером Apache?
Я собираюсь предположить, что вы хотите знать, сколько времени потребовалось для PHP для создания страницы.
Когда скрипт начинается, начиная с 5.1, есть запись в $_SERVER
вы можете использовать, называемую REQUEST_TIME
. Он содержит время, когда запрос был запущен. В конце вашего скрипта вы можете рассчитать его так:
$time_taken = time() - $_SERVER['REQUEST_TIME'];
Очевидно, что это не очень точно, и поэтому в PHP 5.4 появился новый REQUEST_TIME_FLOAT
:
$time_taken = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];
Для <5.4 вы можете использовать этот фрагмент в начале вашего скрипта для обратной совместимости:
if (!isset($_SERVER['REQUEST_TIME_FLOAT'])) { $_SERVER['REQUEST_TIME_FLOAT'] = microtime(true); }
Обновить
Чтобы Apache выполнил это для вас, вы можете добавить параметр формата журнала %T
и / или %D
, например
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" **%T/%D**" combined
Опция %T
позволяет регистрировать количество секунд и %D
регистрирует микросекунды (с Apache 2).
См. Также: Сколько времени требуется, чтобы выполнить запрос
вы можете попробовать формат журнала apache, где вы можете записать время (% D) в микросекундах в ваших журналах доступа.
http://httpd.apache.org/docs/current/mod/mod_log_config.html#formats
Я никогда не пробовал, хотя ..
Вы можете распечатать текущую метку времени при запуске вашего кода, затем распечатать ее в конце и вычесть время окончания из времени начала, чтобы просмотреть общее время загрузки и прогона данных
Вы можете использовать это для создания файла журнала самостоятельно:
в верхней части файла заголовка:
$process_start = date('H:i:s');
в нижнем колонтитуле
$process_end = date('H:i:s'); echo "<br/> process_start {$process_start}<br/> process_end {$process_end}"
Не лучший способ, но может работать