Проблема Error executing job updateTime [РЕШЕНО]

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Проблема Error executing job updateTime [РЕШЕНО]

Сообщение neromih » Вт ноя 07, 2017 7:01 am

Давайте победим такую ошибку, все хорошо работает, но смущает, очень смущает ошибка. На работу не влияет.
В Xray лог:

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

10:52:08 0.50247200 Error executing job tempzal_updateTime (11223521): (/var/www/lib/common.class.php)
10:50:06 0.22614700 Error executing job hums22_updateTime (11223300): (/var/www/lib/common.class.php)
10:49:23 0.58992300 Error executing job TempSensor01_updateTime (11223233): (/var/www/lib/common.class.php)
10:48:04 0.01079300 Error executing job hums22_updateTime (11223081): (/var/www/lib/common.class.php)
10:46:52 0.37812200 Executing: chmod 0777 -f /var/www/dvr/unsorted/*
10:46:52 0.36555800 Executing: chown pi:pi -Rf /var/www/dvr/unsorted/*
10:42:59 0.45744400 Error executing job tempzal2_updateTime (11222542): (/var/www/lib/common.class.php)
10:42:59 0.23611200 Error executing job hums22_updateTime (11222541): (/var/www/lib/common.class.php)
10:41:57 0.74520500 Error executing job hums22_updateTime (11222431): (/var/www/lib/common.class.php)
10:36:52 0.67893400 Executing: chmod 0777 -f /var/www/dvr/unsorted/*
10:36:52 0.66556800 Executing: chown pi:pi -Rf /var/www/dvr/unsorted/*
10:35:51 0.64383100 Error executing job tempzal2_updateTime (11221784): (/var/www/lib/common.class.php)
10:35:51 0.60600900 Error executing job hums22_updateTime (11221783): (/var/www/lib/common.class.php)
10:31:47 0.45622500 Error executing job hums22_updateTime (11221352): (/var/www/lib/common.class.php)
10:26:52 0.17203800 Executing: chmod 0777 -f /var/www/dvr/unsorted/*
10:26:52 0.15886400 Executing: chown pi:pi -Rf /var/www/dvr/unsorted/*
10:23:40 0.58364500 Error executing job tempzal_updateTime (11220491): (/var/www/lib/common.class.php)
10:22:38 0.14950200 Error executing job hums22_updateTime (11220376): (/var/www/lib/common.class.php)
10:19:35 0.63986000 Error executing job Davlenie_updateTime (11220047): (/var/www/lib/common.class.php)
10:18:35 0.19300600 Error executing job tempzal_updateTime (11219939): (/var/www/lib/common.class.php)
10:18:34 0.67734400 Error executing job hums22_updateTime (11219938): (/var/www/lib/common.class.php)
10:17:33 0.36660800 Error executing job hums22_updateTime (11219829): (/var/www/lib/common.class.php)
10:16:52 0.35278500 Executing: chmod 0777 -f /var/www/dvr/unsorted/*
10:16:52 0.33950900 Executing: chown pi:pi -Rf /var/www/dvr/unsorted/*
10:16:33 0.71031800 Error executing job tempzal_updateTime (11219718): (/var/www/lib/common.class.php)
10:16:33 0.12744700 Error executing job hums22_updateTime (11219716): (/var/www/lib/common.class.php)
10:14:31 0.43266300 Error executing job tempzal_updateTime (11219499): (/var/www/lib/common.class.php)
10:13:29 0.31229900 Error executing job hums22_updateTime (11219388): (/var/www/lib/common.class.php)
10:07:23 0.93126700 Error executing job tempzal_updateTime (11218738): (/var/www/lib/common.class.php)
10:06:51 0.48367200 Executing: chmod 0777 -f /var/www/dvr/unsorted/*
10:06:51 0.47041000 Executing: chown pi:pi -Rf /var/www/dvr/unsorted/*
10:06:23 0.52994900 Error executing job tempzal_updateTime (11218628): (/var/www/lib/common.class.php)
10:04:21 0.97015000 Error executing job tempzal_updateTime (11218407): (/var/www/lib/common.class.php)
Датчики реализованы не в Простых устройствах.

Исходное на примере объекта tempzal:

Методы:
valueUpdated:

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

sg("tempzal.updated",time());
callMethod("tempzal.setUpdatedText");
Вызывать родительский метод: никогда.

statusUpdated:
без изменений
Вызывать родительский метод: никогда.


logicAction:
без изменений
Вызывать родительский метод: никогда.

setUpdatedText:
без изменений
Вызывать родительский метод: перед выполнением кода.

Сценарий получения значения:

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

$tem = file_get_contents("http://192.168.0.14/sec/?pt=10&scl=11&i2c_dev=htu21d&i2c_par=1");
sg('tempzal.value',$tem);
Что может вызывать ошибку?
Последний раз редактировалось neromih Чт ноя 09, 2017 5:18 am, всего редактировалось 1 раз.
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Проблема Error executing job updateTime

Сообщение xor » Вт ноя 07, 2017 3:23 pm

Не похоже на viewtopic.php?f=7&t=1871&p=61184#p61184? edited
Последний раз редактировалось xor Ср ноя 08, 2017 10:59 pm, всего редактировалось 1 раз.
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Проблема Error executing job updateTime

Сообщение neromih » Вт ноя 07, 2017 4:00 pm

xor писал(а):Не похоже на viewtopic.php?f=18&t=2100?
Да читал, что можно не вызывать родительский метод, но тогда не работает, через сколько обновился датчик.

Без setupdatetex ни как.
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Проблема Error executing job updateTime

Сообщение nightwind » Ср ноя 08, 2017 12:32 am

job - это таймер. ищи setTimeOut () и смотри, что ему передается. Ошибка скорее всего в нем.
За это сообщение автора nightwind поблагодарил:
neromih (Чт ноя 09, 2017 5:17 am)
Рейтинг: 1.16%
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Проблема Error executing job updateTime

Сообщение neromih » Ср ноя 08, 2017 3:34 am

nightwind писал(а):job - это таймер. ищи setTimeOut () и смотри, что ему передается. Ошибка скорее всего в нем.
Нашел в (/var/www/lib/common.class.php)

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

/**
 * Summary of setTimeOut
 * @param mixed $title    Title
 * @param mixed $commands Commands
 * @param mixed $timeout  Timeout
 * @return mixed
 */
function setTimeOut($title, $commands, $timeout)
{
   clearTimeOut($title);
   $res=addScheduledJob($title, $commands, time() + $timeout);
   return $res;
}

/**
 * Summary of clearTimeOut
 * @param mixed $title Title
 * @return void
 */
function clearTimeOut($title)
{
   return clearScheduledJob($title);
}

/**
 * Summary of timeOutExists
 * @param mixed $title Title
 * @return int
 */
function timeOutExists($title)
{
   $job = SQLSelectOne("SELECT ID FROM jobs WHERE PROCESSED = 0 AND TITLE LIKE '" . DBSafe($title) . "'");
   return (int)$job['ID'];
}

/**

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

/**
 * Summary of addScheduledJob
 * @param mixed $title    Title
 * @param mixed $commands Commands
 * @param mixed $datetime Date
 * @param mixed $expire   Expire time (default 60)
 * @return mixed
 */
function addScheduledJob($title, $commands, $datetime, $expire = 1800)
{
   $rec = array();
   $rec['TITLE']    = $title;
   $rec['COMMANDS'] = $commands;
   $rec['RUNTIME']  = date('Y-m-d H:i:s', $datetime);
   $rec['EXPIRE']   = date('Y-m-d H:i:s', $datetime + $expire);
   $rec['ID']       = SQLInsert('jobs', $rec);

   return $rec['ID'];
}

/**
 * Summary of clearScheduledJob
 * @param mixed $title Title
 * @return void
 */
function clearScheduledJob($title)
{
   SQLExec("DELETE FROM jobs WHERE TITLE LIKE '" . DBSafe($title) . "'");
}

/**
 * Delete job from schedule
 * @param mixed $id Job id
 * @return void
 */
function deleteScheduledJob($id)
{
   SQLExec("DELETE FROM jobs WHERE ID = " . (int)$id);
}
Нашел в (/var/www/lib/common.class.php)

В свойствах класса setUpdatedText, statusUpdated:
setUpdatedText:

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

/* begin injection of {SDevices} */
require(DIR_MODULES.'devices/SDevices_setUpdatedText.php');
/* end injection of {SDevices} */ 
statusUpdated:

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

require(DIR_MODULES.'devices/SDevices_statusUpdated.php'); 
devices/SDevices_setUpdatedText.php

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

<?php

@include_once(ROOT . 'languages/devices_' . SETTINGS_SITE_LANGUAGE . '.php');
@include_once(ROOT . 'languages/devices_default' . '.php');

$ot = $this->object_title;
$updatedTime = $this->getProperty('updated');
$passed = time() - $updatedTime;
$newTimeout=0;

if ($passed<10) {
    $newTimeout = 10;
    $this->setProperty('updatedText',LANG_DEVICES_PASSED_NOW);
} elseif ($passed<60) {
    $newTimeout = 10;
    $this->setProperty('updatedText',$passed.' '.LANG_DEVICES_PASSED_SECONDS_AGO);
} elseif ($passed<60*60) {
    $newTimeout = 60;
    $this->setProperty('updatedText',round($passed/60).' '.LANG_DEVICES_PASSED_MINUTES_AGO);
/*
} elseif ($passed<12*60*60) {
    $newTimeout = 60 * 60;
    $this->setProperty('updatedText',round($passed/60/60).' '.LANG_DEVICES_PASSED_HOURS_AGO);
*/
} elseif ($passed<20*60*60) {
    //just time
    $newTimeout = 60 * 60;
    $this->setProperty('updatedText',date('H:i',$updatedTime));
} else {
    //time and date
    $this->setProperty('updatedText',date('d.M.Y H:i',$updatedTime));//
}

if ($newTimeout > 0) {
    setTimeOut($ot.'_updateTime','callMethod("'.$ot.'.setUpdatedText");',$newTimeout);
} 
devices/SDevices_statusUpdated.php

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

<?php

 $ot=$this->object_title;
 $linked_room=$this->getProperty('linkedRoom');

 $tm=time();
 $this->setProperty('updated', $tm);
 $this->callMethod('setUpdatedText');
 $this->setProperty('alive', 1);


 $alive_timeout=(int)$this->getProperty('aliveTimeout')*60*60;
 if (!$alive_timeout) {
  $alive_timeout=2*24*60*60; // 2 days alive timeout by default
 }

 setTimeout($ot.'_alive_timer', 'setGlobal("'.$ot.'.alive", 0);', $alive_timeout);

if ($this->class_title == 'SMotions' && $params['NEW_VALUE'] && !timeOutExists($ot.'_motion_timer_status')) {
    $this->callMethodSafe('motionDetected',array('statusUpdated'=>1));
} elseif ($this->class_title == 'SButtons' && $params['NEW_VALUE'] && !timeOutExists($ot.'_pressed_status')) {
    $this->callMethodSafe('pressed',array('statusUpdated'=>1));
}

if ($linked_room && $this->getProperty('isActivity')) {
 if (getGlobal('NobodyHomeMode.active')) {
  callMethodSafe('NobodyHomeMode.deactivate');
 }
 ClearTimeOut("nobodyHome");
 SetTimeOut("nobodyHome","callMethodSafe('NobodyHomeMode.activate');", 1*60*60);
 if ($linked_room) {
  callMethodSafe($linked_room.'.onActivity', array('sensor'=>$ot));
 }
}

include_once(DIR_MODULES.'devices/devices.class.php');
$dv=new devices();
$dv->checkLinkedDevicesAction($this->object_title, $value); 
Понимаю что statusUpdated не в тему написал.


Нашел еще SDevices
Название: - updated
Описание - Updated Timestamp
Запускать метод при изменении (не обязательно): - пусто.

Ошибка происходит при установки значения любого объект.updated так как .updatedText время прошедшие с обновления объект.updated корректно считает.

Да вроде все нормально (нифига не понятно). Куда рыть? :)
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
nightwind
Сообщения: 333
Зарегистрирован: Вс июн 26, 2016 4:42 pm
Откуда: Барановичи
Благодарил (а): 28 раз
Поблагодарили: 52 раза
Контактная информация:

Re: Проблема Error executing job updateTime

Сообщение nightwind » Ср ноя 08, 2017 10:32 pm

job - это таймер. ищи setTimeOut () и смотри, что ему передается.
ищи в СВОЕМ коде, не в файлах мажордома
например:

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

setTimeOut($id.'_move',"callMethod('intSensor.statusChanged',array('status'=>0));",20);   
допустим тут валится, как у тебя. Значит ищем ошибку в методе intSensor.statusChanged.
скорее всего так.
За это сообщение автора nightwind поблагодарил:
neromih (Чт ноя 09, 2017 5:17 am)
Рейтинг: 1.16%
Аватара пользователя
xor
Сообщения: 2039
Зарегистрирован: Сб ноя 22, 2014 8:45 pm
Благодарил (а): 286 раз
Поблагодарили: 629 раз

Re: Проблема Error executing job updateTime

Сообщение xor » Ср ноя 08, 2017 11:36 pm

Копать так копать!
Ошибка Error executing job tempzal_updateTime (11223521): (/var/www/lib/common.class.php)
смотрим common.class.php:
codeПоказать

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

/**
 * Summary of runScheduledJobs
 * @return void
 */
function runScheduledJobs()
{
   SQLExec("DELETE FROM jobs WHERE EXPIRE <= '" . date('Y-m-d H:i:s') . "'");

   $sqlQuery = "SELECT *
                  FROM jobs
                 WHERE PROCESSED = 0
                   AND EXPIRED   = 0
                   AND RUNTIME   <= '" . date('Y-m-d H:i:s') . "'";

   $jobs  = SQLSelect($sqlQuery);
   $total = count($jobs);

   for ($i = 0; $i < $total; $i++)
   {
      echo "Running job: " . $jobs[$i]['TITLE'] . "\n";
      $jobs[$i]['PROCESSED'] = 1;
      $jobs[$i]['STARTED']   = date('Y-m-d H:i:s');
      
      SQLUpdate('jobs', $jobs[$i]);
      $url    = BASE_URL . '/objects/?job=' . $jobs[$i]['ID'];
      $result = trim(getURL($url, 0));
      
      $result = preg_replace('/<!--.+-->/is', '', $result);
      //DebMes('>'.$result.'<');
      if (!preg_match('/OK$/', $result))
      {
         //getLogger(__FILE__)->error(sprintf('Error executing job %s (%s): %s', $jobs[$i]['TITLE'], $jobs[$i]['ID'], $result));
        //DebMes('>'.$result.'<'); 
        DebMes(sprintf('Error executing job %s (%s): %s', $jobs[$i]['TITLE'], $jobs[$i]['ID'], $result) .' ('.__FILE__.')');
      }
   }
}
ошибка возникает, если $result<>ОК. Может, это поможет.
За это сообщение автора xor поблагодарил:
neromih (Чт ноя 09, 2017 5:17 am)
Рейтинг: 1.16%
neromih
Сообщения: 154
Зарегистрирован: Чт апр 20, 2017 5:32 am
Откуда: Томск
Благодарил (а): 55 раз
Поблагодарили: 22 раза

Re: Проблема Error executing job updateTime

Сообщение neromih » Чт ноя 09, 2017 5:17 am

Вроде победил, как оказалось, вызов в Методе:
valueUpdated:

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

sg("tempzal.updated",time());
callMethod("tempzal.setUpdatedText"); 
Это и была ошибка.

Суть какая - скриптом запрашиваем температуру -> sg("tempzal.updated",time()); обновляем время на текущие -> и тут то я и вызывал метод setUpdatedText (callMethod("tempzal.setUpdatedText");) что приводило к ошибке.

Предыстория: ранее после какого то обновления обновление счетчика, работало таким образом, без ошибок. Потом еще обновления были, и в один прекрасный момент в Xray повалились ошибки Error executing job.
Raspberry Pi2, Pi3, MegaD2561RTC + 14 in + 14R, WemosD1, Mega2560, Arduino nano v.3, Arduino Uno, ESP8266 12f.
Аватара пользователя
igorewa
Сообщения: 515
Зарегистрирован: Ср дек 21, 2016 11:54 pm
Откуда: Киев
Благодарил (а): 12 раз
Поблагодарили: 43 раза

Re: Проблема Error executing job updateTime

Сообщение igorewa » Вт дек 12, 2017 1:54 pm

neromih писал(а):Вроде победил, как оказалось, вызов в Методе:
valueUpdated:

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

sg("tempzal.updated",time());
callMethod("tempzal.setUpdatedText");
Это и была ошибка.

Суть какая - скриптом запрашиваем температуру -> sg("tempzal.updated",time()); обновляем время на текущие -> и тут то я и вызывал метод setUpdatedText (callMethod("tempzal.setUpdatedText");) что приводило к ошибке.

Предыстория: ранее после какого то обновления обновление счетчика, работало таким образом, без ошибок. Потом еще обновления были, и в один прекрасный момент в Xray повалились ошибки Error executing job.
А можно немного по подробнее как избавиться от этих ошибок, что нужно изменить?
ASUS H110T, I5 7500, DDR4-16Gb, SSD256 . WIN10 64 (LTSB)
pash4uga
Сообщения: 192
Зарегистрирован: Чт окт 04, 2018 12:04 pm
Благодарил (а): 28 раз
Поблагодарили: 45 раз

Re: Проблема Error executing job updateTime [РЕШЕНО]

Сообщение pash4uga » Пн дек 17, 2018 6:51 am

Тоже после обновлений повалили эти ошибки.
Кто и как победил?
Ответить