[Настройка] onNewMinute

Описание настройки чего либо

Модераторы: immortal, newz20

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

[Настройка] onNewMinute

Сообщение Alex » Пн дек 03, 2012 9:48 am

В классе Timer есть методы onNewHour и onNewMinute, но нет метода onNewSecond. Как работать с интервалами меньше минуты? Например, как вызывать метод раз в 30 секунд или запускать скрипт раз в 20 секунд?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: onNewMinute

Сообщение sergejey » Пн дек 03, 2012 12:48 pm

можно сделать скрипт такого плана. например, назвать его MyScript1 и в нём такой код

Код: Выделить всё

clearTimeout("myscript1_timer"); // очищаем таймер (чтобы случайно две копии не запустить)
... тут какой-то полезный код ...
setTimeOut("myscript1_timer","runScript('MyScript1');",30); // ставим таймер на запуск самого себя через 30 секунд
ну а в onNewMinute или даже в onNewHour можно вызвать runScript('MyScript1'); для первого запуска. либо даже вручную запустить его первый раз (правда после перезагрузки системы он сам не запустится я думаю, если вручную).
За это сообщение автора sergejey поблагодарил:
~220v (Пт июл 03, 2020 1:29 pm)
Рейтинг: 1.16%

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: onNewMinute

Сообщение Alex » Пн дек 03, 2012 2:46 pm

Спасибо, всё работает.
raptorialfungus
Сообщения: 75
Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Благодарил (а): 0
Поблагодарили: 9 раз

Re: onNewMinute

Сообщение raptorialfungus » Пн дек 03, 2012 9:05 pm

А я никак не пойму, почему у меня не отрабатывают OnNewMinute/OnNewHour.
ClockChime.time каждую минуту обновляется, а методы не отрабатывают. Пробовал добавлять для теста код say("test"); в методы и родительского класса Timer и в методы ClockChime.
При вызове через URL все нормально.
Я под Linux'ом. Сначала думал, что может надо на крон вешать вызов методов, но ClockChime.time ведь обновляется.

P.S. В последней сборке MajorDoMo в списке объектов для ClockChime не видно метода OnNewHour. Только когда заходишь в ClockChime, выбираешь Методы, то там есть OnNewHour без красной звездочки.
Андрей
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: onNewMinute

Сообщение sergejey » Вт дек 04, 2012 12:50 pm

raptorialfungus, а цикл /cycle.php запускается? из него потом должен запускаться ./scripts/cycle_main.php и он как раз вызывает OnNewMinute/OnNewHour

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
raptorialfungus
Сообщения: 75
Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Благодарил (а): 0
Поблагодарили: 9 раз

Re: onNewMinute

Сообщение raptorialfungus » Вт дек 04, 2012 1:30 pm

sergejey писал(а):а цикл /cycle.php запускается? из него потом должен запускаться ./scripts/cycle_main.php и он как раз вызывает OnNewMinute/OnNewHour
С циклами всё в порядке.
Оказалось, что проблема с /objects/?object=ClockChime&op=m&m=onNewMinute.
Не отдаётся никакого ответа и ничего не выполняется, потому что не передаются параметры.
В логе Apache просто GET /objects/?object=ClockChime.

Очередные изыскания: когда делаешь запрос снаружи, то всё отрабатывает нормально.
Когда делаешь запрос локально, то похоже некорректно работает rewrite для параметров.
Более того, когда я в командной строке запускаю wget http://адрес/objects/?object=ClockChime&op=m&m=onNewMinute, то он повисает. Если запросить какой-то url без дополнительных параметров, то всё нормально. Виноват "&" получается, но каким образом ... :(

Мдя, придётся на внешнем хостинге в крон добавлять вызов раз в минуту и раз в час пока не разберусь. :?

Еще через час безуспешных копаний в интернете попробовал запросить URL, заключив в апострофы - всё заработало.
wget http://127.0.0.1/objects/?object=ClockC ... nNewMinute - не работает
wget 'http://127.0.0.1/objects/?object=ClockC ... nNewMinute' - работает

Еще час ... добил проблему.

Апострофы были критичны только для wget, а curl работает и с ними, но ему мешают несколько параметров. А именно
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 500);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 500);
в функции raiseEvent в /modules/objects/objects.class.php. Я эти строки пока закомментировал.
Последний раз редактировалось raptorialfungus Вт дек 04, 2012 7:14 pm, всего редактировалось 1 раз.
Андрей
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: onNewMinute

Сообщение Urbas81 » Вт дек 04, 2012 6:01 pm

У еня под XP тоже не работает, что где поправить?
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: onNewMinute

Сообщение arturmon » Пн дек 24, 2012 9:49 pm

raptorialfungus писал(а):
sergejey писал(а):а цикл /cycle.php запускается? из него потом должен запускаться ./scripts/cycle_main.php и он как раз вызывает OnNewMinute/OnNewHour
С циклами всё в порядке.
Оказалось, что проблема с /objects/?object=ClockChime&op=m&m=onNewMinute.
Не отдаётся никакого ответа и ничего не выполняется, потому что не передаются параметры.
В логе Apache просто GET /objects/?object=ClockChime.

Очередные изыскания: когда делаешь запрос снаружи, то всё отрабатывает нормально.
Когда делаешь запрос локально, то похоже некорректно работает rewrite для параметров.
Более того, когда я в командной строке запускаю wget http://адрес/objects/?object=ClockChime&op=m&m=onNewMinute, то он повисает. Если запросить какой-то url без дополнительных параметров, то всё нормально. Виноват "&" получается, но каким образом ... :(

Мдя, придётся на внешнем хостинге в крон добавлять вызов раз в минуту и раз в час пока не разберусь. :?

Еще через час безуспешных копаний в интернете попробовал запросить URL, заключив в апострофы - всё заработало.
wget http://127.0.0.1/objects/?object=ClockC ... nNewMinute - не работает
wget 'http://127.0.0.1/objects/?object=ClockC ... nNewMinute' - работает

Еще час ... добил проблему.

Апострофы были критичны только для wget, а curl работает и с ними, но ему мешают несколько параметров. А именно
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS, 500);
curl_setopt($ch, CURLOPT_TIMEOUT, 1);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 500);
в функции raiseEvent в /modules/objects/objects.class.php. Я эти строки пока закомментировал.
привет.
у меня похожая ситуация. тоже дебиан, тоже исполняется цикл /cycle.php (значения с 1wire устройст обновляются) и в логах пишет что /scripts/cycle_main.php работает. но при выполнении wget 'http://127.0.0.1/objects/?object=ClockC ... nNewMinute' переменные обновляются! изменения которые ты делал я не делал.
если нажать тест метода onNewMinute то значение обновляется! что за ерунда :?:
raptorialfungus
Сообщения: 75
Зарегистрирован: Чт ноя 29, 2012 4:13 pm
Благодарил (а): 0
Поблагодарили: 9 раз

Re: onNewMinute

Сообщение raptorialfungus » Вт дек 25, 2012 9:40 am

arturmon писал(а):при выполнении wget 'http://127.0.0.1/objects/?object=ClockC ... nNewMinute' переменные обновляются! изменения которые ты делал я не делал.
если нажать тест метода onNewMinute то значение обновляется! что за ерунда :?:
Я ничего не понял в этой фразе. Когда wget запускаешь, то они все-таки обновляются или нет?
Если нет, то мне помогло то, о чём я написал. Если обновляются, то в чем собственно проблема? :)
Вообще, в /debmes/ всё прекрасно видно, когда отрабатывает и когда не отрабатывает запрос. По-крайней мере, у меня в 87-й строке /objects/index.php включена отладка всех запросов к серверу:

Код: Выделить всё

Debmes("Request: ".$request);
Андрей
arturmon
Сообщения: 155
Зарегистрирован: Сб июл 07, 2012 11:42 pm
Благодарил (а): 3 раза
Поблагодарили: 3 раза

Re: onNewMinute

Сообщение arturmon » Ср дек 26, 2012 9:52 pm

raptorialfungus писал(а):
arturmon писал(а):при выполнении wget 'http://127.0.0.1/objects/?object=ClockC ... nNewMinute' переменные обновляются! изменения которые ты делал я не делал.
если нажать тест метода onNewMinute то значение обновляется! что за ерунда :?:
Я ничего не понял в этой фразе. Когда wget запускаешь, то они все-таки обновляются или нет?
Если нет, то мне помогло то, о чём я написал. Если обновляются, то в чем собственно проблема? :)
Вообще, в /debmes/ всё прекрасно видно, когда отрабатывает и когда не отрабатывает запрос. По-крайней мере, у меня в 87-й строке /objects/index.php включена отладка всех запросов к серверу:

Код: Выделить всё

Debmes("Request: ".$request);
Сравните время Properties и Methods
как я понимаю метод должен выполняться каждую минуту, но он не выполняется автоматически.
он выполнится только если нажать "Вызов метода: По ссылке: test
это так и должно быть,что метод не вызывается каждую минуту?
Вложения
43.jpg
43.jpg (158.51 КБ) 27088 просмотров
12.jpg
12.jpg (24.17 КБ) 27088 просмотров
1.jpg
1.jpg (18.14 КБ) 27088 просмотров
Ответить