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

$prevRunPassed

Добавлено: Ср апр 25, 2018 10:37 pm
webms
а как использовать вст. функцию $prevRunPassed?
у меня задача, нужно узнать сколько времени прошло с последнего вызова
в мануале нашел $prevRunPassed

Re: $prevRunPassed

Добавлено: Ср апр 25, 2018 10:43 pm
skysilver
webms писал(а):
Ср апр 25, 2018 10:37 pm
в мануале нашел $prevRunPassed
В каком мануале?

Re: $prevRunPassed

Добавлено: Ср апр 25, 2018 10:43 pm
webms
skysilver писал(а):
Ср апр 25, 2018 10:43 pm
webms писал(а):
Ср апр 25, 2018 10:37 pm
в мануале нашел $prevRunPassed
В каком мануале?
https://kb.smartliving.ru/vstroennie-v- ... o-funkcii/

вызываю в методе, по инструкции.. но работать не хочет =(

Re: $prevRunPassed

Добавлено: Ср апр 25, 2018 10:45 pm
webms

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

/* СТАРЫЙ КОД
if (gg('IN4.pressIN4') == '1') { //нажатие кнопки
  if (gg('P4.status') == '1' && gg('IN4.avtostart') == '1')
  {
    $interval = time() - gg('IN4.TaimerNajatie');
    if ($interval >= gg('IN4.setingTimeSTARTventilyatora') * 60)
    {
      sg('P1.status', 1);
      setTimeOut("IN4process", "sg('P1.status',0);", gg('IN4.setingTimeOUTventilyatora') * 60);
    }
  }  else  {
    $this -> setProperty('TaimerNajatie', time());
  }
}
*/
sg('P1.test', $prevRunPassed);
if (gg('IN4.pressIN4') && gg('P4.status') && gg('IN4.avtostart')) {
  if ($prevRunPassed >= gg('IN4.setingTimeSTARTventilyatora') * 60)  {
    sg('P1.status', 1);
    setTimeOut("IN4process", "sg('P1.status',0);", gg('IN4.setingTimeOUTventilyatora') * 60);
  }
}

//$prevRunPassed -- сколько секунд прошло с последнего вызова

Re: $prevRunPassed

Добавлено: Ср апр 25, 2018 10:51 pm
skysilver
Дичь какая-то. )) Первый раз такое вижу. В исходниках ядра только одно упоминание про prevRunPassed и то закомментированное.

Re: $prevRunPassed

Добавлено: Ср апр 25, 2018 11:32 pm
fandaymon
В классе объектов есть такая переменная

if (defined('SETTINGS_DEBUG_HISTORY') && SETTINGS_DEBUG_HISTORY==1) {
$class_object=SQLSelectOne("SELECT NOLOG FROM classes WHERE ID='".$this->class_id."'");
if (!$class_object['NOLOG']) {

$prevLog=SQLSelectOne("SELECT ID, UNIX_TIMESTAMP(ADDED) as UNX FROM history WHERE OBJECT_ID='".$this->id."' AND METHOD_ID='".$method['ID']."' ORDER BY ID DESC LIMIT 1");
if ($prevLog['ID']) {
$prevRun=$prevLog['UNX'];
$prevRunPassed=time()-$prevLog['UNX'];
}

Я так понимаю при установленном SETTINGS_DEBUG_HISTORY и NOLOG=false для данного класса, можно в методе получить $prevRunPassed в качестве переменной

Судя по тому что у меня history пустая, видимо SETTINGS_DEBUG_HISTORY нигде не установлена. Можно попробовать добавить define в config и глянуть - изменится ли что-нибудь

Re: $prevRunPassed

Добавлено: Ср апр 25, 2018 11:34 pm
webms
чего то не понял как это сделать)

Re: $prevRunPassed

Добавлено: Ср апр 25, 2018 11:55 pm
fandaymon
webms писал(а):
Ср апр 25, 2018 11:34 pm
чего то не понял как это сделать)
В config.php добавить строчку

Define('SETTINGS_DEBUG_HISTORY', 1);

и наверное перезапустить мажордомо. После чего дождаться отработки каких-нибудь методов и посмотреть появились ли какие-нибудь записи в таблице history.

А сработает или нет - знает только автор 8-)

Re: $prevRunPassed

Добавлено: Чт апр 26, 2018 5:20 am
Logrus
а последствия не хуже ли будут для объема бд, чем единичный длинный код?

Re: $prevRunPassed

Добавлено: Чт апр 26, 2018 9:08 am
webms
Logrus писал(а):
Чт апр 26, 2018 5:20 am
а последствия не хуже ли будут для объема бд, чем единичный длинный код?
тоже об этом подумал.
решил оставить изначальную версию

fandaymon, спасибо за ответ