Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

...] Текущее время, измеренное за количество секунд после эпохи UNIX (1 января 1970 года 00:00:00 по Гринвичу).

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

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

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

Значение, присвоенное $microtime должно быть float, который вы получите, когда пройдете true в качестве параметра для 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 () не просто возвращает время начала выполнения.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top