![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| semnt |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.11.2005 Репутация: 1 Всего: 1 |
Offtop: Как же надоело, что теоретические способы решения задач, рассматриваемые в литературе, не имеют реальной силы при реализации на практике
Простая задача. Необходимо измерить время, прошедшее с какого-то предыдущего момента с точностью до миллисекунды. Используем функцию microtime(); Функция microtime() возвращает строку. В строке два числа разделённые пробелом. Второе число - кол-во секунд, прошедших с начало эпохи (00:00:00 01.01,1970). Первое число - кол-во миллисекунд, прошедших с начала секунды (первое число). Создаём функцию now(), которая будет возвращать одно число (дата на данный момент: секунды+миллисекунды).
Всё отлично. Проверяем как она будет работать.
Объясняю. Ошибкой считается ситуация, когда результат функции microtime() в определённый момент времени меньше, чем результат этой же функции, но в предыдущий момент времени. У меня получается примерно 10 действий с ошибкой на все 1000 действий. Что? Почему? Как заставить работать нормально??.... |
||||
|
|||||
| AztEK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 723 Регистрация: 4.1.2005 Репутация: 6 Всего: 18 |
ХМ...А у меня всё работатет.
Apache 1.3.1 + PHP 4.3.10 -------------------- Linux is like wigwam -- no windows, no gates, apache inside. |
|||
|
||||
| Mal Hack |
|
||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Неа.
Первая ьполовина - секунды с 1970, вторая - милисекунды текущей секунды. |
||||||
|
|||||||
| semnt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.11.2005 Репутация: 1 Всего: 1 |
Превда?) echo microtime(); //И ясно, что наоборот) Загрузил свой пример на хост (Apache/1.3.33. PHP Version 4.3.11). Вроде работает без ошибок. А на локальной машине не хочет(Apache/1.3.19. PHP Version 4.0.4pl1). Может дело в том, что на локальной машине стоит Windows. Вобщем непонятно. |
|||
|
||||
| Mal Hack |
|
||||||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Так, да... Ступил.
Проверил на винде, все нормально. У тебя конечно версия PHP старая очень, что не есть хорошо. Подумай на счет вот этого. Условие всегда ложно !!
|
||||||
|
|||||||
| semnt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 4.11.2005 Репутация: 1 Всего: 1 |
Понятно... видимо php действительно уже стар)
Ну да... я и проверял скрипт на стабильность этим условием. |
|||
|
||||
| Mal Hack |
|
|||
![]() Мудрый... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 9926 Регистрация: 15.2.2004 Репутация: 122 Всего: 261 |
Это же в теории невозможно |
|||
|
||||
| kat_ru |
|
|||
![]() Другого не будет Профиль Группа: Участник Сообщений: 23 Регистрация: 16.1.2007 Где: Moscow City Репутация: нет Всего: нет |
У меня иногда вот такой результат получается это что?
|
|||
|
||||
| Feldmarschall |
|
|||
|
Новичок ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2641 Регистрация: 11.12.2007 Репутация: 22 Всего: 32 |
||||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: 3 Всего: 4 |
kat_ru, ~9.9 в степени -5.
|
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 32 Всего: 401 |
CyClon, не совсем ;)
kat_ru, это 0.000099897384643555 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| Serkys |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1061 Регистрация: 19.4.2004 Репутация: 4 Всего: 22 |
Позволю себе напомнить вам, что начиная с PHP5 в функцию microtime() можно передать true и мы получим float, а не непонятно зачем созданный формат "микросекунды-пробел-секунды".
Никто не подскажет, зачем был нужен такой странный формат? |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |