Получение точного времени в PHP

Я заметил, что независимо от времени выполнения данного сценария каждый вызов date () будет возвращать одну и ту же метку времени независимо от того, где в сценарии вызывается функция. Похоже, он просто возвращает время, когда скрипт впервые начал выполняться.

Для целей ведения журнала было бы чрезвычайно полезно иметь возможность получать инкрементные отметки времени из сценария. Это возможно? Есть ли способ сделать это относительно легким?

Редактировать: Предполагает ли пример для функции микровремя (), что она могла бы это сделать. Кто-нибудь может подтвердить?

Обновлять: microtime () действительно работает, но я не могу отформатировать его с помощью функции date (), потому что date () принимает временные метки только как целые числа (т.е. без микросекунд). Как мне получить правильно отформатированную дату из значения, возвращаемого функцией microtime ()?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
0
5 605
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

http://us.php.net/microtime дает мне разное время в одном и том же скрипте.

Вы можете использовать Пакет сравнительного анализа груши для получения информации о времени и профилировании.

Я запустил этот код на своей машине:

<?php
$time_start = time();

sleep(2);

$time_end = time();

print 'Start: ' . date("m/d/Y @ g:i:sA", $time_start) . '<br>';
print 'End: ' . date("m/d/Y @ g:i:sA", $time_end);
?>

И он выводит:

Start: 10/23/2008 @ 3:12:23PM
End: 10/23/2008 @ 3:12:25PM

Это заставляет меня поверить, что time() не просто возвращает время начала выполнения.

Прежде всего, датировать() используется для форматирования метки времени - это просто поведение по умолчанию, которое будет использовать текущую метку времени, когда date() вызывается без второго параметра. Используемая метка времени будет меткой времени в момент вызова функции - вызов date('Y-m-d') аналогичен вызову date('Y-m-d', time()), где время() предоставит вам

[...] the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT).

Вы получаете одну и ту же метку времени каждый раз, когда вызываете date(), потому что ваш сценарий слишком быстр и выполняется в течение одной секунды, что не приводит к изменению метки времени.

Чтобы решить вашу вторую проблему форматирования возвращаемого значения микровремя (), вы можете сделать следующее (непроверено)

function formatTime($microtime, $format)
{
    list($timestamp, $fraction) = explode('.', $microtime);
    return date($format, (int)$timestamp) . '.' . $fraction;
}

Значение, присвоенное $microtime, должно быть float, которое вы получите, когда передадите true в качестве параметра для microtime().

Другие вопросы по теме