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

Не работаетют методы onNewMinute и Hour

Добавлено: Вт окт 13, 2020 3:37 pm
massol
Ничего не происходит в автоматическом режиме. Если запускать с сайта, то работает.
Ubuntu 18.04 php7.2 nginx
В логах вот такое раз в минуту

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

127.0.0.1 - - [13/Oct/2020:15:11:00 +0300] "GET /api.php/method/ClockChime.onNewMinute?raiseEvent=1&m_c_s%5B0%5D=ClockChime.onNewMinute.d751713988987e9331980363e24189ce&no_session=1 HTTP/1.1" 404 95 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:32.0) Gecko/20100101 Firefox/32.0"

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 8:43 am
massol
Немного разобрал вызовы в cycle_main:
При вызове метода вызывается функция raiseEvent, та в свою очередь вызывает функцию callMethodSafe и в ней есть такой блок

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

 
 if (IsSet($_SERVER['REQUEST_URI']) && ($_SERVER['REQUEST_URI'] != '') && !$raiseEvent && count($call_stack)>1) {
            $result = $this->callMethod($name, $params);
        } else {
           $result = callAPI('/api/method/' . urlencode($this->object_title . '.' . $name), 'GET', $params);
       }
И вот тут срабатывает else, потому что $_SERVER['REQUEST_URI'] почему то пустой. Если принудительно запустить callMethod, то все нормально. Что делает callAPI я так и не понял, но она не работает как надо, сервер отдает 404.

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 9:09 am
tarasfrompir
massol писал(а):
Ср окт 14, 2020 8:43 am
Немного разобрал вызовы в cycle_main:
При вызове метода вызывается функция raiseEvent, та в свою очередь вызывает функцию callMethodSafe и в ней есть такой блок

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

 
 if (IsSet($_SERVER['REQUEST_URI']) && ($_SERVER['REQUEST_URI'] != '') && !$raiseEvent && count($call_stack)>1) {
            $result = $this->callMethod($name, $params);
        } else {
           $result = callAPI('/api/method/' . urlencode($this->object_title . '.' . $name), 'GET', $params);
       }
И вот тут срабатывает else, потому что $_SERVER['REQUEST_URI'] почему то пустой. Если принудительно запустить callMethod, то все нормально. Что делает callAPI я так и не понял, но она не работает как надо, сервер отдает 404.
в альче фчера внесли измениения -хотя у вас певого такая трабала...

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 10:42 am
massol
Спасибо за ответ, обновился, но проблема осталась. Подскажите, насколько критично будет заменить вызов callAPI на callMethod?

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 11:49 am
tarasfrompir
massol писал(а):
Ср окт 14, 2020 10:42 am
Спасибо за ответ, обновился, но проблема осталась. Подскажите, насколько критично будет заменить вызов callAPI на callMethod?
А не допущена ли где ошибка в оннеминут?? пропробуйте все свое стереть и посмотреть ...

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 11:58 am
massol
У меня так с "нуля", только поставил. Но даже пустой метод не отрабатывает.

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 12:06 pm
tarasfrompir
massol писал(а):
Ср окт 14, 2020 11:58 am
У меня так с "нуля", только поставил. Но даже пустой метод не отрабатывает.
давай сюда текст под спойлер

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 12:26 pm
massol
Метод стандартный, я не менял
СпойлерПоказать
$h=(int)date('G',time());
$m=date('i',time());

if (isWeekDay()) {

}


if (($h>=8) && getGlobal('clockChimeEnabled')) {
if ($m=="00") {
say(timeNow(),1);
}
}


setGlobal('timeNow',date('H:i'));

$homeStatus=date('H:i');
if (getGlobal('NobodyHomeMode.active')) {
$homeStatus.=' Дома никого';
} else {
$homeStatus.=' Дома кто-то есть';
}

$homeStatus.=' '.getGlobal('Security.stateDetails');
$homeStatus.=' '.getGlobal('System.stateDetails');
$homeStatus.=' '.getGlobal('Communication.stateDetails');
setGlobal('HomeStatus',$homeStatus);

if (timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')=="1") {
setGlobal("isDark",0);
callMethod('DarknessMode.deactivate');
} elseif (!timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')!="1") {
setGlobal("isDark",1);
callMethod('DarknessMode.activate');
}

if (timeIs(getGlobal('SunRiseTime'))) {
say('Всходит солнце');
}
if (timeIs(getGlobal('SunSetTime'))) {
say('Солнце заходит',2);
}

if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
say("Похоже никого нет сегодня, можно сэкономить немного.");
callMethod('EconomMode.activate');
}

if (timeIs('20:00')) {
callMethod('NightMode.activate');
} elseif (timeIs('08:00')) {
callMethod('NightMode.deactivate');
}

if (timeIs("03:00")) {
runScript("systemMaintenance");
}

if (gg('ThisComputer.AlarmStatus') && timeIs(gg('ThisComputer.AlarmTime'))) {
runScript('MorningAlarm');
}

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 2:49 pm
tarasfrompir
massol писал(а):
Ср окт 14, 2020 12:26 pm
Метод стандартный, я не менял
СпойлерПоказать
$h=(int)date('G',time());
$m=date('i',time());

if (isWeekDay()) {

}


if (($h>=8) && getGlobal('clockChimeEnabled')) {
if ($m=="00") {
say(timeNow(),1);
}
}


setGlobal('timeNow',date('H:i'));

$homeStatus=date('H:i');
if (getGlobal('NobodyHomeMode.active')) {
$homeStatus.=' Дома никого';
} else {
$homeStatus.=' Дома кто-то есть';
}

$homeStatus.=' '.getGlobal('Security.stateDetails');
$homeStatus.=' '.getGlobal('System.stateDetails');
$homeStatus.=' '.getGlobal('Communication.stateDetails');
setGlobal('HomeStatus',$homeStatus);

if (timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')=="1") {
setGlobal("isDark",0);
callMethod('DarknessMode.deactivate');
} elseif (!timeBetween(getGlobal('SunRiseTime'),getGlobal('SunSetTime')) && getGlobal('isDark')!="1") {
setGlobal("isDark",1);
callMethod('DarknessMode.activate');
}

if (timeIs(getGlobal('SunRiseTime'))) {
say('Всходит солнце');
}
if (timeIs(getGlobal('SunSetTime'))) {
say('Солнце заходит',2);
}

if (timeIs("23:30") && (gg("EconomMode.active")!="1") && (gg("NobodyHomeMode.active")=="1")) {
say("Похоже никого нет сегодня, можно сэкономить немного.");
callMethod('EconomMode.activate');
}

if (timeIs('20:00')) {
callMethod('NightMode.activate');
} elseif (timeIs('08:00')) {
callMethod('NightMode.deactivate');
}

if (timeIs("03:00")) {
runScript("systemMaintenance");
}

if (gg('ThisComputer.AlarmStatus') && timeIs(gg('ThisComputer.AlarmTime'))) {
runScript('MorningAlarm');
}
даже хз

Re: Не работаетют методы onNewMinute и Hour

Добавлено: Ср окт 14, 2020 7:10 pm
Logrus
massol писал(а):
Ср окт 14, 2020 8:43 am
Немного разобрал вызовы в cycle_main:
При вызове метода вызывается функция raiseEvent, та в свою очередь вызывает функцию callMethodSafe и в ней есть такой блок

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

 
 if (IsSet($_SERVER['REQUEST_URI']) && ($_SERVER['REQUEST_URI'] != '') && !$raiseEvent && count($call_stack)>1) {
            $result = $this->callMethod($name, $params);
        } else {
           $result = callAPI('/api/method/' . urlencode($this->object_title . '.' . $name), 'GET', $params);
       }
И вот тут срабатывает else, потому что $_SERVER['REQUEST_URI'] почему то пустой. Если принудительно запустить callMethod, то все нормально. Что делает callAPI я так и не понял, но она не работает как надо, сервер отдает 404.
на энджин икс проблема с апи вместо апи.пхп описана неоднократно