Версия для печати темы
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
Есть такая проблема в Викторине на линуксе. Я просто отключил в скрипте подсчёт и показ времени/скорострельности. Это особо и не нужно никому.
А не стал им заниматься, ибо есть/были проблемы/дела поважнее.
Автор: Iskandark 4.7.2013, 14:48
Цитата(Ksan @ 4.7.2013, 15:29)
Есть такая проблема в Викторине на линуксе. Я просто отключил в скрипте подсчёт и показ времени/скорострельности.
Это особо и не нужно никому.
А не стал им заниматься, ибо есть/были проблемы/дела поважнее.
Это проблема... и игрокам необходимо знать, некоторые дают ответы за 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())
Да! То, что надо! Работает
А почему он извратный? Такой способ не нагружает процессор?
Автор: mariner 6.7.2013, 1:35
Лишняя зависимость.