Страница 1 из 6

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

Добавлено: Пн дек 03, 2012 9:48 am
Alex
В классе Timer есть методы onNewHour и onNewMinute, но нет метода onNewSecond. Как работать с интервалами меньше минуты? Например, как вызывать метод раз в 30 секунд или запускать скрипт раз в 20 секунд?

Re: onNewMinute

Добавлено: Пн дек 03, 2012 12:48 pm
sergejey
можно сделать скрипт такого плана. например, назвать его MyScript1 и в нём такой код

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

clearTimeout("myscript1_timer"); // очищаем таймер (чтобы случайно две копии не запустить)
... тут какой-то полезный код ...
setTimeOut("myscript1_timer","runScript('MyScript1');",30); // ставим таймер на запуск самого себя через 30 секунд
ну а в onNewMinute или даже в onNewHour можно вызвать runScript('MyScript1'); для первого запуска. либо даже вручную запустить его первый раз (правда после перезагрузки системы он сам не запустится я думаю, если вручную).

Re: onNewMinute

Добавлено: Пн дек 03, 2012 2:46 pm
Alex
Спасибо, всё работает.

Re: onNewMinute

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

P.S. В последней сборке MajorDoMo в списке объектов для ClockChime не видно метода OnNewHour. Только когда заходишь в ClockChime, выбираешь Методы, то там есть OnNewHour без красной звездочки.

Re: onNewMinute

Добавлено: Вт дек 04, 2012 12:50 pm
sergejey
raptorialfungus, а цикл /cycle.php запускается? из него потом должен запускаться ./scripts/cycle_main.php и он как раз вызывает OnNewMinute/OnNewHour

Re: onNewMinute

Добавлено: Вт дек 04, 2012 1:30 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. Я эти строки пока закомментировал.

Re: onNewMinute

Добавлено: Вт дек 04, 2012 6:01 pm
Urbas81
У еня под XP тоже не работает, что где поправить?

Re: onNewMinute

Добавлено: Пн дек 24, 2012 9:49 pm
arturmon
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 то значение обновляется! что за ерунда :?:

Re: onNewMinute

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

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

Debmes("Request: ".$request);

Re: onNewMinute

Добавлено: Ср дек 26, 2012 9:52 pm
arturmon
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
это так и должно быть,что метод не вызывается каждую минуту?