| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Разница двух дат |
| Автор: semnt 6.11.2005, 00:07 | ||||
| Offtop: Как же надоело, что теоретические способы решения задач, рассматриваемые в литературе, не имеют реальной силы при реализации на практике Простая задача. Необходимо измерить время, прошедшее с какого-то предыдущего момента с точностью до миллисекунды. Используем функцию microtime(); Функция microtime() возвращает строку. В строке два числа разделённые пробелом. Второе число - кол-во секунд, прошедших с начало эпохи (00:00:00 01.01,1970). Первое число - кол-во миллисекунд, прошедших с начала секунды (первое число). Создаём функцию now(), которая будет возвращать одно число (дата на данный момент: секунды+миллисекунды).
Всё отлично. Проверяем как она будет работать.
Объясняю. Ошибкой считается ситуация, когда результат функции microtime() в определённый момент времени меньше, чем результат этой же функции, но в предыдущий момент времени. У меня получается примерно 10 действий с ошибкой на все 1000 действий. Что? Почему? Как заставить работать нормально??.... |
| Автор: AztEK 6.11.2005, 19:10 |
| ХМ...А у меня всё работатет. Apache 1.3.1 + PHP 4.3.10 |
| Автор: Mal Hack 6.11.2005, 19:45 | ||||||
Неа.
Первая ьполовина - секунды с 1970, вторая - милисекунды текущей секунды. |
| Автор: semnt 7.11.2005, 00:18 | ||
Превда?) echo microtime(); //И ясно, что наоборот) Загрузил свой пример на хост (Apache/1.3.33. PHP Version 4.3.11). Вроде работает без ошибок. А на локальной машине не хочет(Apache/1.3.19. PHP Version 4.0.4pl1). Может дело в том, что на локальной машине стоит Windows. Вобщем непонятно. |
| Автор: Mal Hack 7.11.2005, 02:09 | ||||||
Так, да... Ступил.
Проверил на винде, все нормально. У тебя конечно версия PHP старая очень, что не есть хорошо. Подумай на счет вот этого. Условие всегда ложно !!
|
| Автор: semnt 7.11.2005, 12:46 | ||
Понятно... видимо php действительно уже стар)
Ну да... я и проверял скрипт на стабильность этим условием. |
| Автор: Mal Hack 7.11.2005, 14:47 | ||
Это же в теории невозможно |
| Автор: kat_ru 7.3.2008, 17:46 | ||
У меня иногда вот такой результат получается это что?
|
| Автор: Feldmarschall 7.3.2008, 17:49 |
| http://ru.wikipedia.org/wiki/%D0%AD%D0%BA%D1%81%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%86%D0%B8%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C |
| Автор: CyClon 7.3.2008, 18:47 |
| kat_ru, ~9.9 в степени -5. |
| Автор: SelenIT 7.3.2008, 20:57 |
| CyClon, не совсем ;) kat_ru, это 0.000099897384643555 |
| Автор: Serkys 8.3.2008, 13:54 |
| Позволю себе напомнить вам, что начиная с PHP5 в функцию microtime() можно передать true и мы получим float, а не непонятно зачем созданный формат "микросекунды-пробел-секунды". Никто не подскажет, зачем был нужен такой странный формат? |