[Настройка] onNewMinute
-
- Сообщения: 2357
- Зарегистрирован: Пт апр 20, 2012 12:53 pm
- Благодарил (а): 42 раза
- Поблагодарили: 262 раза
[Настройка] onNewMinute
В классе Timer есть методы onNewHour и onNewMinute, но нет метода onNewSecond. Как работать с интервалами меньше минуты? Например, как вызывать метод раз в 30 секунд или запускать скрипт раз в 20 секунд?
- sergejey
- Site Admin
- Сообщения: 4284
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 75 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: onNewMinute
можно сделать скрипт такого плана. например, назвать его MyScript1 и в нём такой код
ну а в onNewMinute или даже в onNewHour можно вызвать runScript('MyScript1'); для первого запуска. либо даже вручную запустить его первый раз (правда после перезагрузки системы он сам не запустится я думаю, если вручную).
Код: Выделить всё
clearTimeout("myscript1_timer"); // очищаем таймер (чтобы случайно две копии не запустить)
... тут какой-то полезный код ...
setTimeOut("myscript1_timer","runScript('MyScript1');",30); // ставим таймер на запуск самого себя через 30 секунд
- Рейтинг: 1.16%
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 75
- Зарегистрирован: Чт ноя 29, 2012 4:13 pm
- Благодарил (а): 0
- Поблагодарили: 9 раз
Re: onNewMinute
А я никак не пойму, почему у меня не отрабатывают OnNewMinute/OnNewHour.
ClockChime.time каждую минуту обновляется, а методы не отрабатывают. Пробовал добавлять для теста код say("test"); в методы и родительского класса Timer и в методы ClockChime.
При вызове через URL все нормально.
Я под Linux'ом. Сначала думал, что может надо на крон вешать вызов методов, но ClockChime.time ведь обновляется.
P.S. В последней сборке MajorDoMo в списке объектов для ClockChime не видно метода OnNewHour. Только когда заходишь в ClockChime, выбираешь Методы, то там есть 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
raptorialfungus, а цикл /cycle.php запускается? из него потом должен запускаться ./scripts/cycle_main.php и он как раз вызывает OnNewMinute/OnNewHour
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 75
- Зарегистрирован: Чт ноя 29, 2012 4:13 pm
- Благодарил (а): 0
- Поблагодарили: 9 раз
Re: onNewMinute
С циклами всё в порядке.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 раз.
Андрей
-
- Сообщения: 155
- Зарегистрирован: Сб июл 07, 2012 11:42 pm
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Re: onNewMinute
привет.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 то значение обновляется! что за ерунда
-
- Сообщения: 75
- Зарегистрирован: Чт ноя 29, 2012 4:13 pm
- Благодарил (а): 0
- Поблагодарили: 9 раз
Re: onNewMinute
Я ничего не понял в этой фразе. Когда wget запускаешь, то они все-таки обновляются или нет?arturmon писал(а):при выполнении wget 'http://127.0.0.1/objects/?object=ClockC ... nNewMinute' переменные обновляются! изменения которые ты делал я не делал.
если нажать тест метода onNewMinute то значение обновляется! что за ерунда
Если нет, то мне помогло то, о чём я написал. Если обновляются, то в чем собственно проблема?
Вообще, в /debmes/ всё прекрасно видно, когда отрабатывает и когда не отрабатывает запрос. По-крайней мере, у меня в 87-й строке /objects/index.php включена отладка всех запросов к серверу:
Код: Выделить всё
Debmes("Request: ".$request);
Андрей
-
- Сообщения: 155
- Зарегистрирован: Сб июл 07, 2012 11:42 pm
- Благодарил (а): 3 раза
- Поблагодарили: 3 раза
Re: onNewMinute
Сравните время Properties и Methodsraptorialfungus писал(а):Я ничего не понял в этой фразе. Когда wget запускаешь, то они все-таки обновляются или нет?arturmon писал(а):при выполнении wget 'http://127.0.0.1/objects/?object=ClockC ... nNewMinute' переменные обновляются! изменения которые ты делал я не делал.
если нажать тест метода onNewMinute то значение обновляется! что за ерунда
Если нет, то мне помогло то, о чём я написал. Если обновляются, то в чем собственно проблема?
Вообще, в /debmes/ всё прекрасно видно, когда отрабатывает и когда не отрабатывает запрос. По-крайней мере, у меня в 87-й строке /objects/index.php включена отладка всех запросов к серверу:Код: Выделить всё
Debmes("Request: ".$request);
как я понимаю метод должен выполняться каждую минуту, но он не выполняется автоматически.
он выполнится только если нажать "Вызов метода: По ссылке: test
это так и должно быть,что метод не вызывается каждую минуту?
- Вложения
-
- 43.jpg (158.51 КБ) 27958 просмотров
-
- 12.jpg (24.17 КБ) 27958 просмотров
-
- 1.jpg (18.14 КБ) 27958 просмотров