Как бы особо и не надо, да чтоб в другой раз не писать заново, сохраню здесь.
// Функция выдачи в лог отметок времени $time_to_log_ip = '88.77.66.55'; // Фильтрация по IP $time_to_log_start = 0; if($_SERVER['REMOTE_ADDR'] == $time_to_log_ip) { $time_to_log_file = fopen($_SERVER['DOCUMENT_ROOT'] . '/ttl.log', 'w'); // Имя файла лога fwrite($time_to_log_file, "<pre>\n"); } function time_to_log($msg) { global $time_to_log_file, $time_to_log_start, $time_to_log_ip; if($_SERVER['REMOTE_ADDR'] != $time_to_log_ip) return; $current_time = microtime(true); if(!$time_to_log_start) $time_to_log_start = $current_time; fwrite($time_to_log_file, round($current_time - $time_to_log_start, 3) . "\t" . $msg . "\n"); return; } time_to_log(__FILE__.__LINE__); // end of Функция выдачи в лог отметок времени
Далее в интересующие места кода втыкаем строчку time_to_log(__FILE__.__LINE__);. При необходимости можно вписать своё сообщение. __FILE__.__LINE__ - это ещё нужно для того, чтоб потом не искать, куда навтыкали контрольные точки.
Другой вариант, с использованием статичной переменной в классе и выводом результата непосредственно на страницу.
class a { // Класс поддерживает установку меток времени в процессе выполнения кода и вывод меток // с указанием времени выполнения фрагментов кода между соседними метками. // Примеры обращения: // a::m(__FILE__.__LINE__); // установка метки // a::m('Контрольная точка 127'); // установка метки // a::p(); // печать результата protected static $a; public static function m($s = '') { if(!is_array(self::$a)) { self::$a = array(); } self::$a[] = array('t' => microtime(true), 's' => $s); } public static function p() { echo "<pre>\n==========================\n"; $t0 = $td = $tp = null; foreach(self::$a as $i=>$e) { if(!isset($t0)) $t0 = (double) $e['t']; if(!isset($tp)) $tp = (double) $e['t']; $tm = (double) $e['t'] - $t0; $ts = number_format($tm, 4); $td = number_format((double) $e['t'] - $tp, 4); $tp = (double) $e['t']; echo "{$ts}\t{$td}\t{$e['s']}\n"; } echo "==========================\n</pre>"; } }
Обновлено 28 декабря 2017г.