Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ PtokaX под *nix _ Таймер на Ptokax 0.5.0.0

Автор: Iskandark 2.7.2013, 19:00

Поставил Ptokax 0.5.0.0 на Debian. Сделал для теста таймера простой скрипт скрипт:

Код
milsec=0

function OnStartup()
        TmrMan.AddTimer(10,'CountTime')
end

function CountTime()
        milsec=milsec+1
        Core.SendToAll(tostring(milsec))
end


В итоге в чат приходит 5 сообщений в секунду, а должно приходить 100. Пробовал в Таймере указать TmrMan.AddTimer(500,'CountTime'), но все равно приходит 5 сообщений в секунду (а должно приходить 2 сообщения).
Если поставить значение больше 1000мс, то работает все в порядке.

У кого-нибудь есть возможность проверить таймер со значением меньше 1000мс для Ptokax 0.5.0.0 на Linux? Чтобы знать, это общая проблема или только у меня.

Автор: Alexey 3.7.2013, 12:14

Version: PtokaX DC Hub 0.5.0.1 built on Apr 7 2013 02:45:32
Ubuntu 10.4 x64 в сети другого провайдера

Скрыпт
Код
local c = 0
local nMaxc = 50
local sBot
local iStart

function OnStartup()
    sBot    = sBot or SetMan.GetString(21)
    iStart    = os.time()
    TmrMan.AddTimer(10, 'CountTime')
end

function CountTime(uT)
    c = c + 1
    Core.SendToAll(os.time()-iStart.." "..c)
    if c >= nMaxc then
        TmrMan.RemoveTimer(uT)
        Core.SendToAll("<"..sBot.."> До "..nMaxc.." досчитали за "..os.time()-iStart.." секунд.")
    end
end

Результат
Код
[13:14:14] <BotNick> *** Alexey перезапустил скрипт: t_timer.lua.
[13:14:14] 0 1
[13:14:14] 0 2
[13:14:14] 0 3
[13:14:14] 0 4
[13:14:14] 0 5
[13:14:14] 0 6
[13:14:14] 0 7
[13:14:15] 0 8
[13:14:15] 0 9
[13:14:15] 1 10
[13:14:15] 1 11
[13:14:15] 1 12
[13:14:15] 1 13
[13:14:15] 1 14
[13:14:15] 1 15
[13:14:15] 1 16
[13:14:15] 1 17
[13:14:15] 1 18
[13:14:15] 1 19
[13:14:15] 1 20
[13:14:15] 1 21
[13:14:15] 1 22
[13:14:15] 1 23
[13:14:16] 1 24
[13:14:16] 1 25
[13:14:16] 2 26
[13:14:16] 2 27
[13:14:16] 2 28
[13:14:16] 2 29
[13:14:16] 2 30
[13:14:16] 2 31
[13:14:16] 2 32
[13:14:16] 2 33
[13:14:16] 2 34
[13:14:16] 2 35
[13:14:16] 2 36
[13:14:16] 2 37
[13:14:16] 2 38
[13:14:16] 2 39
[13:14:16] 2 40
[13:14:17] 2 41
[13:14:17] 2 42
[13:14:17] 2 43
[13:14:17] 2 44
[13:14:17] 3 45
[13:14:17] 3 46
[13:14:17] 3 47
[13:14:17] 3 48
[13:14:17] 3 49
[13:14:17] 3 50
[13:14:17] <BotNick> До 50 досчитали за 3 секунд.


Если закомментировать строку 14, то время даже увеличивается!
[14:18:48] <BotNick> До 50 досчитали за 6 секунд.

Автор: Iskandark 3.7.2013, 20:34

У меня почему-то другой результат :(

Результат
Код
[21:31:15] 0 1
[21:31:16] 1 2
[21:31:16] 1 3
[21:31:16] 1 4
[21:31:16] 1 5
[21:31:16] 2 6
[21:31:17] 2 7
[21:31:17] 2 8
[21:31:17] 2 9
[21:31:17] 2 10
[21:31:18] 3 11
[21:31:18] 3 12
[21:31:18] 3 13
[21:31:18] 3 14
[21:31:18] 3 15
[21:31:19] 4 16
[21:31:19] 4 17
[21:31:19] 4 18
[21:31:19] 4 19
[21:31:19] 5 20
[21:31:20] 5 21
[21:31:20] 5 22
[21:31:20] 5 23
[21:31:20] 6 24
[21:31:21] 6 25
[21:31:21] 6 26
[21:31:21] 6 27
[21:31:22] 6 28
[21:31:22] 7 29
[21:31:22] 7 30
[21:31:22] 7 31
[21:31:22] 7 32
[21:31:23] 7 33
[21:31:23] 8 34
[21:31:23] 8 35
[21:31:23] 8 36
[21:31:23] 8 37
[21:31:24] 9 38
[21:31:24] 9 39
[21:31:24] 9 40
[21:31:24] 9 41
[21:31:24] 9 42
[21:31:24] 9 43
[21:31:25] 10 44
[21:31:25] 10 45
[21:31:25] 10 46
[21:31:25] 10 47
[21:31:25] 10 48
[21:31:26] 11 49
[21:31:26] 11 50
[21:31:26] <Вot> До 50 досчитали за 11 секунд.



А что это за версия 0.5.0.1, она чем то отличается от 0.5.0.0?

Автор: Alexey 3.7.2013, 21:30

Это тестовая версия, отличается этим:

Цитата
Added: White space characters (ascii chars below 32) are not allowed in nicks anymore.
Added: Option to store passwords for registered users as hashes.
Fixed: IpToCountry for IPv4 ignored first and last ip in country range (thx Alexey and alex82 for report).
Fixed: Crash in windows version when script send some global data as reaction to chat without blocking it (thx Alexey for report).
Fixed: Wrong chat lines order when multiple messages was received in one loop and script send global data reply for one of them.
Fixed: On hub bot nick change old bot was not removed from userlist (thx Alexey for report).
Fixed: Few other issues related to hub bot nick and info changes.
Fixed: Issues related to OpChat bot nick and info changes.
Fixed: 64bit windoze build was limited to only 2 GB of memory.

Автор: Iskandark 4.7.2013, 9:47

Проблема заключается в том, что на Debian нельзя определить время в сотых секундах (например, время на ответ игрока викторины):

1) TmrMan.AddTimer() выполняется только каждые 0.2 сек.

2) os.clock () - возвращает время в миллисекундах, которое программа выполнялась, но на Linux возвращает не то время (For example, on Linux, clock gives "CPU time" [2][3], which only counts the time in which the process is actively using the CPU and does not count time executing other processes or waiting for I/O. CPU time may be less than the real time ("wall clock time"). On Windows, clock counts real (wall clock) time since the start of the process [4].)

3) os.date() может вернуть время в секундах

4) os.time() может вернуть время в секундах

Есть ли какой способ посчитать длительность в миллисекундах на Linux?

Автор: Ksan 4.7.2013, 11:15

Iskandark, может, вам стоило бы озвучить цель ваших экспериментов?
Возможно, решение вашей неозвученной проблемы лежит совсем в другой плоскости..
Я никак не могу представить себе задачу, в которой в чат должны сыпаться миллион сообщений со скоростью шестиствольного пулемёта в руках Терминатора..

Автор: Iskandark 4.7.2013, 14:00

Ksan, цель очень простая, необходимо определить время на ответ с точностью до сотых секунд в викторине. На виндусе эта задача без проблем решается через os.clock (). На линуксе не нашел ни одного способа, как можно определить время на ответ с сотыми долями секунды.

Автор: Ksan 4.7.2013, 14:29

Есть такая проблема в Викторине на линуксе. Я просто отключил в скрипте подсчёт и показ времени/скорострельности. big_smile.gif Это особо и не нужно никому.
А не стал им заниматься, ибо есть/были проблемы/дела поважнее.

Автор: Iskandark 4.7.2013, 14:48

Цитата(Ksan @ 4.7.2013, 15:29) *
Есть такая проблема в Викторине на линуксе. Я просто отключил в скрипте подсчёт и показ времени/скорострельности. big_smile.gif Это особо и не нужно никому.
А не стал им заниматься, ибо есть/были проблемы/дела поважнее.


Это проблема... и игрокам необходимо знать, некоторые дают ответы за 1.5 секунды, некоторые за 2... Есть статистка самых быстрых ответов, если нельзя будет считать с точностью до сотых, то они все в одну кучу сольются.

Буду надеяться, что решение кто-нибудь знает и предложит...

Автор: mariner 5.7.2013, 0:48

Помнится, был извратный способ получить время.

Код
require "socket"
print("Milliseconds: " .. socket.gettime())

Автор: Iskandark 5.7.2013, 16:16

Цитата(mariner @ 5.7.2013, 1:48) *
Помнится, был извратный способ получить время.
Код
require "socket"
print("Milliseconds: " .. socket.gettime())


Да! То, что надо! Работает big_smile.gif

А почему он извратный? Такой способ не нагружает процессор?

Автор: mariner 6.7.2013, 1:35

Лишняя зависимость.