- microtime
- Description
- Parameters
- Return Values
- Examples
- See Also
- Определяем время работы скрипта PHP
- Время выполнения PHP скрипта — алгоритм определения
- Время работы PHP скрипта — реализация алгоритма
- Измерение скорости выполнения php скрипта
- Простой вариант
- Вариант посложнее
- PHP время выполнения скрипта
- Как определить в php время выполнения скрипта
- Читайте также похожие статьи:
- Функции временных меток PHP
- Получение текущей временной метки в PHP
- StrToTime ()
- mktime()
- microtime()
- Преобразование даты и времени в метку
microtime
(PHP 4, PHP 5, PHP 7, PHP 8)
microtime — Return current Unix timestamp with microseconds
Description
microtime() returns the current Unix timestamp with microseconds. This function is only available on operating systems that support the gettimeofday() system call.
For performance measurements, using hrtime() is recommended.
Parameters
If used and set to true , microtime() will return a float instead of a string , as described in the return values section below.
Return Values
By default, microtime() returns a string in the form «msec sec», where sec is the number of seconds since the Unix epoch (0:00:00 January 1,1970 GMT), and msec measures microseconds that have elapsed since sec and is also expressed in seconds as a decimal fraction.
If as_float is set to true , then microtime() returns a float , which represents the current time in seconds since the Unix epoch accurate to the nearest microsecond.
Examples
Example #1 Timing script execution
// Sleep for a while
usleep ( 100 );
$time_end = microtime ( true );
$time = $time_end — $time_start ;
echo «Did nothing in $time seconds\n» ;
?>
Example #2 microtime() and REQUEST_TIME_FLOAT
// Randomize sleeping time
usleep ( mt_rand ( 100 , 10000 ));
// REQUEST_TIME_FLOAT is available in the $_SERVER superglobal array.
// It contains the timestamp of the start of the request with microsecond precision.
$time = microtime ( true ) — $_SERVER [ «REQUEST_TIME_FLOAT» ];
echo «Did nothing in $time seconds\n» ;
?>
See Also
- time() — Return current Unix timestamp
- hrtime() — Get the system’s high resolution time
Определяем время работы скрипта PHP
Доброго времени суток, коллеги! 🙂
Сегодня я решил затронуть такую тему, как время выполнения скрипта PHP и его определение.
Не скажу, что данная необходимость возникает каждый день, но время от времени на практике возникают ситуации, когда нужно получить время работы скрипта PHP.
Особенно часто за таким занятием можно застукать разработчиков, занимающихся рефакторингом кода и оптимизацией существующих алгоритмов, когда время выполнения PHP скрипта является ключевым фактором при выборе конечного варианта.
Ну, и ещё иногда данные цифры требуют менеджеры и заказчики, желающие выяснить, сколько времени потребуется на то или иное действие в коде.
Поэтому я и решил написать данную коротенькую заметку, в которой решил изложить порядок действий в аналогичной ситуации.
Сперва мы рассмотрим сам алгоритм определения времени исполнения PHP скрипта, а затем я приведу код, с помощью которого он будет реализовываться.
Время выполнения PHP скрипта — алгоритм определения
Порядок наших действий будет предельно прост:
- определяем текущее серверное время в PHP коде перед выполнением действий, прописанных в скрипте;
- после того, как скрипт выполнится, снова узнаём серверное время;
- вычисляем средствами PHP разницу времени между завершением выполнения скрипта и его запуском.
Полученное в итоге значение как раз и будет временем выполнения PHP скрипта, которое можно будет принимать во внимание при дальнейшей оптимизации и прочих действиях.
Время работы PHP скрипта — реализация алгоритма
Для вывода текущего времени в PHP коде я решил воспользоваться стандартной PHP функцией microtime(), которая возвращает текущую метку времени в Unix формате с микросекундами.
Зачем такая точность?
Затем, чтобы уловить малейшие изменения времени выполнения скриптов, т.к. иногда доли секунды могут быть фатальны и привести к большим потерям при использовании медленного кода в больших масштабах.
Ну, и плюс, учёт микросекунд при вычислениях влияет на точность калькуляций в положительную сторону.
Для демонстрации своих теоретических повествований я написал простенький скриптик, который вычисляет время прогона пустого цикла с 30 000 000 итераций (решил взять побольше для наглядности):
Как сказано в официальной документации PHP, по умолчанию microtime() возвращает строку в формате «msec sec», где sec — количество секунд с начала эпохи Unix (1 января 1970 0:00:00 GMT), а msec — это количество микросекунд, прошедших после sec.
Функция PHP microtime() имеет всего один параметр get_as_float, при указании которому значения true можно получить текущее время PHP в секундах, прошедших с начала эпохи Unix с точностью до микросекунд.
Поскольку мне нужно было именно текущее время, а не количество секунд с начала эпохи Unix, то я воспользовался данным параметром, что можно видеть в моём коде.
В итоге, с помощью функции echo(), на экран вывелось следующее сообщение: Скрипт был выполнен за 1.3156361579895 секунд.
Чтобы определить, что данная методика работает верно, я решил задать фиксированное время выполнения скрипта с помощью функции sleep(), которая делает задержку выполнения скрипта на указанное количество секунд.
В итоге, следующая конструкция вернула сообщение Скрипт был выполнен за 2.0000510215759 секунд:
Превышение указанной задержки на микроскопические доли секунд можно списать на время вызова кодовых конструкций и обработку результатов их выполнения серверным железом, поэтому на них вполне можно закрыть глаза.
Если они будут всё-таки раздражать вас или вашего заказчика, то можете воспользоваться хаком в виде банального округления до сотых или тысячных долей с помощью PHP функции round(), задействовав её следующим образом:
Результатом выполнения данного куска кода для вышеприведённого примера станет значение в кругленькие 2 секунды, что устроит самых искушённых перфекционистов 🙂
На этом сегодняшняя информация о том, как можно определить время выполнения скрипта PHP, подходит к концу.
Пишите свои отзывы в комментариях и задавайте интересующие вас вопросы в пабликах проекта в социальных сетях.
Всем удачи и до новых встреч! 🙂
P.S.: если вам нужен сайт либо необходимо внести правки на существующий, но для этого нет времени и желания, могу предложить свои услуги.
Более 5 лет опыта профессиональной разработки сайтов. Работа с PHP, OpenCart, WordPress, Laravel, Yii, MySQL, PostgreSQL, JavaScript, React, Angular и другими технологиями web-разработки.
Опыт разработки проектов различного уровня: лендинги, корпоративные сайты, Интернет-магазины, CRM, порталы. В том числе поддержка и разработка HighLoad проектов. Присылайте ваши заявки на email cccpblogcom@gmail.com.
И с друзьями не забудьте поделиться 😉
Измерение скорости выполнения php скрипта
Хочу потестировать большинство функций WP (и не только), которые взаимозаменяемы.
Правда, столкнулся с проблемой. В интернете предлагают замерять с помощью микройтайм, взял я код. На голом php — полёт нормальный. Вставляю в WP (в хедер и в футер) — выдает баснословное количество секунд. Подскажи, как грамотнее всего замерять скорость выполнения (работы) скрипта PHP или отдельных функций.
Нужна проверка скорости выполнения кода.
Буду рад протестировать и предоставить результаты. Нужно только понять как можно быстро и правильно замерить время выполнения указанного PHP кода.
Иногда бывает нужно замерить время выполнения отельного куска кода в PHP. Сделать это не сложно, ниже разберемся как.
Простой вариант
Замерить скорость выполнения какой-то отдельной его части PHP кода, можно с помощью встроенной в PHP функции microtime( true ) . Функция вернет UNIX штамп времени в микросекундах. Параметр true говорит функции вернуть число, а не строку, чтобы можно было потом просто отнять одно число от другого.
Логика проста: сначала замеряем текущее время в микросекундах, выполняем код, опять замеряем текущее время и высчитываем разницу времени — эта разница и будет временем выполнения кода. С помощью функции sprintf() форматируем результат в более читаемый формат.
Вариант посложнее
Для измерения скорости работы PHP кода, когда-то написал такую функцию:
Если замеряете отдельные быстрые функции, например: __() , то можно повторять выполнение для наглядности. Например, замерим работу __() :
Смотрите также, функции подсчета времени выполнения кода в WP:
П.С. Жду результатов тестов на этом сайте
Спасибо большое Обязательно буду делиться, вот только куда выкладывать? И ещё ма-а-а-аленький вопросик: а память каким образом можно замерять? Для оптимизации, думаю, тоже немаловажный вопрос.
Насчет памяти точно не знаю, надо разобраться с этим. Сейчас немного не до этого. Но я буду иметь ввиду этот вопрос, чуть что отвечу здесь.
PHP время выполнения скрипта
Здравствуйте, уважаемые читатели блога LifeExample, частенько при разработке веб-приложений, возникает задача отследить время выполнения php скрипта. Это нужно в первую очередь для того, чтобы понять насколько быстро, а следовательно и производительно, работает тот или иной кусок программного кода.
Зная время потраченное на выполнение php скрипта, можно оптимизировать код и тем самым ускорить его выполнение.
Чтобы комфортно оптимизировать код проекта на PHP, нужно уметь вычислять время его выполнения. Сегодня я покажу вам, как отследить в php, время выполнения скрипта.
Как определить в php время выполнения скрипта
Данная задача очень легко решается при использовании встроенной функции microtime() .
microtime() – вызвав эту функцию мы получим текущий Unix time stamp в микросекундах.
Функцию microtime() можно использовать как секундомер, вызвав ее дважды мы можем вычислить время прошедшее в этот период.
При выполнении этого php скрипта мы получим надпись:
Время выполнения php скрипта в микросекундах: 0,00039400000000001
Задача решена, но в таком виде не очень удобно анализировать скорость. Предлагаю округлить полученное число до десятитысячной доли, таким образом:
Теперь текст, примет вид:
Прошло времени в микросекундах: 0,0004 msec
Ну и для еще большей удобность предлагаю преобразовать микросекунды, в миллисекунды умножив полученное число на 1000, поскольку в одной миллисекундах ровно 1000 микросекунд.
Теперь зная как в php время выполнения скрипта определить, мы сможем приняться за оптимизацию самых различных частей кода, желаю вам в этом успехов. Пишите в комментариях, кто и как оптимизирует свои скрипты.
Читайте также похожие статьи:
Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.
Функции временных меток PHP
PHP предоставляет несколько функций для выполнения операций с временными данными. В этой статье мы рассмотрим функции временных меток PHP.
Временная метка — это значение, представленное в секундах, которое рассчитывается с начала эпохи UNIX, 1 января 1970 года.
В этой статье мы рассмотрим, как с помощью PHP-функций даты и времени, связанных с временными метками:
- получить текущую метку времени;
- преобразовать дату / время в метку времени.
Получение текущей временной метки в PHP
Текущее значение временной метки можно получить тремя способами.
Это функция PHP для получения текущего значения временной метки. Она не принимает никаких аргументов. Пример использования:
StrToTime ()
Функция предназначена для получения метки времени из заданной строки, представляющей собой значение даты. Например, “Tuesday last week”, “+1 week”, “21 November 2008” и т. д.
Для получения текущей временной метки нужно передать функции значение “now”:
При вызове strtotime() с переданными некорректными данными, которые не поддерживаются PHP, а функция вернет значение false.
mktime()
Используется для получения метки времени UNIX. Функция принимает набор параметров, обозначающих час, минуты, секунды, месяц, день и год. А также дополнительный флаг, представляющий состояние летнего времени.
Чтобы получить текущую временную метку, в качестве параметра функции передается date() с соответствующими значениями. Например:
microtime()
Описанные выше функции PHP возвращают только десятизначное значение. Но microtime() возвращает количество секунд и микросекунд, прошедших с начала эпохи UNIX.
Функция не требует обязательных параметров. Есть необязательный параметр $get_as_float. Он принимает логические значения. Если передать TRUE, то microtime() вернет значение с плавающей запятой. Если FALSEв формате «микросекунды и секунды».
Функции date() нужно передать в качестве аргумента U , чтобы получить текущее значение временной метки. Например:
Преобразование даты и времени в метку
Функции strtotime() и mktime() также используются для преобразования указанной даты в формат временной метки.
Функции strtotime() нужно передать дату в любом из поддерживаемых PHP форматов. Например, dd / mm / yyyy, mm / dd / yyyy и т. д. Чтобы использовать mktime(), нужно разложить дату и отправить ее компоненты в эту функцию.
Также можно преобразовать значение метки времени в дату, используя функцию date(). Для этого необходимо передать требуемый формат даты в качестве первого параметра и временную метку в качестве второго. Например:
- Эти операции также могут выполняться в объектно-ориентированном стиле программирования с функциями PHP, определенными в интерфейсе класса DateTime.
- Но часть функций для получения временных меток PHP имеют процедурный стиль. Он является псевдонимом конструкторов классов, определенных для объектной модели PHP DateTime.
Скачать исходный код
Вадим Дворников автор-переводчик статьи « PHP Timestamp »