Вы эту строчку прописали в onNewHour?Vovix писал(а):Я попробовалzelevova писал(а):Отличная мысль. Надо будет попробовать так длительные процедуры запускать. А я не мог придумать как параллельно процесс запустить.
это: callMethod("Izhevsk.sensors");
заменил на это: setTimeOut('IzhevskSensor','callMethod("Izhevsk.sensors");',1);
результатом пока очень доволен! метод onNewHour стал просто "летать"!
а метод Izhevsk.sensors наблюдаю запущенным на время в X-Ray -> Timers
т.е. все ок! Еще раз СПАСИБО за идею! (не зря сюда написал)
почему так может быть?
Модератор: immortal
-
- Сообщения: 242
- Зарегистрирован: Вт мар 11, 2014 8:36 pm
- Откуда: Челябинск
- Благодарил (а): 107 раз
- Поблагодарили: 7 раз
Re: почему так может быть?
Majordomo на Orange Pi Zero.
- Vovix
- Сообщения: 1155
- Зарегистрирован: Пн янв 27, 2014 1:43 am
- Откуда: г.Ижевск
- Благодарил (а): 60 раз
- Поблагодарили: 532 раза
- Контактная информация:
Re: почему так может быть?
Да, конечно!triada13 писал(а):....
Вы эту строчку прописали в onNewHour?
- Рейтинг: 1.16%
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: почему так может быть?
Помогите пожалуйста решить проблему с ClockChime.OnNewHour!
Недавно заметил что перестает отрабатывать OnNewHour через некоторое время (раз 15-25 отрабатывает, а потом отказывается)...Симптомы похожие. Сделал все что описано в этой теме, единственные 2 метода, которые оттуда вызываются - вызываются через SetTimeOut()...добавил туда только строчку для контроля за работой методаМетод загнулся дня 3 назад, и все еще не запускался ниразу. При этом классовый метод выполняется исправно. Где посмотреть - что с ним происходит?
Недавно заметил что перестает отрабатывать OnNewHour через некоторое время (раз 15-25 отрабатывает, а потом отказывается)...Симптомы похожие. Сделал все что описано в этой теме, единственные 2 метода, которые оттуда вызываются - вызываются через SetTimeOut()...добавил туда только строчку для контроля за работой метода
Код: Выделить всё
sg('ThisComputer.onnewhourcheck', gg('ThisComputer.timenow').' '.gg('ThisComputer.datenow'));
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 238
- Зарегистрирован: Чт ноя 26, 2015 10:54 pm
- Благодарил (а): 38 раз
- Поблагодарили: 45 раз
Re: почему так может быть?
Я у себя заметил, что не отрабатывают методы объектов класса systemStates:
Communication.checkState
System.checkState
Цикл cycle_states.php запущен, методы регулярно вызываются, но состояние системы отражается некорректно.
Оказалось, что не отрабатывают конструкции, использующие указатель $this.
Перезагрузка помогает, но временно.
Заменил $this->setProperty, $this->getProperty на setGlobal, getGlobal - методы отрабатывают.
Но проблема то осталась. Пока не знаю куда дальше копать.
Не знаю как проверить что $this "поломался"
$this.title выдает какую-то билеберду.
Пока вставил в код проверку на
$this->getProperty('Свойство')==getGlobal('Объект.Свойство')
По крайней мере буду знать, что система не функционирует.
Communication.checkState
System.checkState
Цикл cycle_states.php запущен, методы регулярно вызываются, но состояние системы отражается некорректно.
Оказалось, что не отрабатывают конструкции, использующие указатель $this.
Перезагрузка помогает, но временно.
Заменил $this->setProperty, $this->getProperty на setGlobal, getGlobal - методы отрабатывают.
Но проблема то осталась. Пока не знаю куда дальше копать.
Не знаю как проверить что $this "поломался"
$this.title выдает какую-то билеберду.
Пока вставил в код проверку на
$this->getProperty('Свойство')==getGlobal('Объект.Свойство')
По крайней мере буду знать, что система не функционирует.
- Vovix
- Сообщения: 1155
- Зарегистрирован: Пн янв 27, 2014 1:43 am
- Откуда: г.Ижевск
- Благодарил (а): 60 раз
- Поблагодарили: 532 раза
- Контактная информация:
Re: почему так может быть?
вот помню некоторое время назад(несколько месяцев) была такая проблема: перестал нормально работать(запускаться) OnNewHour, ковырялся тогда долго и обнаружил, что он у меня так-же из двух частей был, т.е. был код как в методе класса так и в методе объекта...nick7zmail писал(а):Помогите пожалуйста решить проблему с ClockChime.OnNewHour!
Недавно заметил что перестает отрабатывать OnNewHour через некоторое время (раз 15-25 отрабатывает, а потом отказывается)...Симптомы похожие. Сделал все что описано в этой теме, единственные 2 метода, которые оттуда вызываются - вызываются через SetTimeOut()...добавил туда только строчку для контроля за работой методаМетод загнулся дня 3 назад, и все еще не запускался ниразу. При этом классовый метод выполняется исправно. Где посмотреть - что с ним происходит?Код: Выделить всё
sg('ThisComputer.onnewhourcheck', gg('ThisComputer.timenow').' '.gg('ThisComputer.datenow'));
решилось просто объединением кода (ну а потом даже просто удалением одной части) и помещением в одно место - метод именно объекта... и стало нормально работать (ну так-же до некоторых описанных ранее мной моментов)! Вот!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: почему так может быть?
Ну по скольку метод класса отлично работает - думаю если туда все переместить - тоже будет нормально работать все...но все таки это не нормальный ход вещей)) Как минимум Сергея в известность поставить надо...может быть когда-нибудь найдется причина - дак включит в обнову.Vovix писал(а): решилось просто объединением кода (ну а потом даже просто удалением одной части) и помещением в одно место - метод именно объекта... и стало нормально работать (ну так-же до некоторых описанных ранее мной моментов)! Вот!
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".

>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- sergejey
- Site Admin
- Сообщения: 4286
- Зарегистрирован: Пн сен 05, 2011 6:48 pm
- Откуда: Минск, Беларусь
- Благодарил (а): 76 раз
- Поблагодарили: 1559 раз
- Контактная информация:
Re: почему так может быть?
Добавил себе в список "посмотреть", попробую разобраться.
Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
-
- Сообщения: 238
- Зарегистрирован: Чт ноя 26, 2015 10:54 pm
- Благодарил (а): 38 раз
- Поблагодарили: 45 раз
Re: почему так может быть?
Vovix, поищи в базе MySQL, таблице pvalues свойства со значением PROPERTY_NAME='ThisComputer.onnewhourcheck'
Что-то мне подсказывает, что их там два. И ты записываешь значение в одно, а система считывает из другого.
У меня, например, создается видимость что не работает в объекте System $this->setProperty('stateColor', ...). А на самом деле в базе их два, и одно из них успешно перезаписывается:
ID PROPERTY_ID OBJECT_ID VALUE UPDATED PROPERTY_NAME
93 42 17 green 2015-12-14 22:41:03 System.stateColor
573 296 17 red 2015-12-23 11:05:03 System.stateColor
Что было причиной раздвоения теперь уже, наверное, не восстановить.
Версии:
- неаккуратное обращение с getGlobal, setGlobal (не очень верю)
- обновление (можно ли где-нибудь посмотреть скачивал ли я обновление 14.12.2015)
- кривые руки, тогда вопрос где)))
PS: Еще из "странного":
- исчезли все свойства в базовых классах. Теперь они обычные свойства объектов;
- потерялись методы stateChanged у класса systemStates;
Что-то мне подсказывает, что их там два. И ты записываешь значение в одно, а система считывает из другого.
У меня, например, создается видимость что не работает в объекте System $this->setProperty('stateColor', ...). А на самом деле в базе их два, и одно из них успешно перезаписывается:
ID PROPERTY_ID OBJECT_ID VALUE UPDATED PROPERTY_NAME
93 42 17 green 2015-12-14 22:41:03 System.stateColor
573 296 17 red 2015-12-23 11:05:03 System.stateColor
Что было причиной раздвоения теперь уже, наверное, не восстановить.
Версии:
- неаккуратное обращение с getGlobal, setGlobal (не очень верю)
- обновление (можно ли где-нибудь посмотреть скачивал ли я обновление 14.12.2015)
- кривые руки, тогда вопрос где)))
PS: Еще из "странного":
- исчезли все свойства в базовых классах. Теперь они обычные свойства объектов;
- потерялись методы stateChanged у класса systemStates;
-
- Сообщения: 238
- Зарегистрирован: Чт ноя 26, 2015 10:54 pm
- Благодарил (а): 38 раз
- Поблагодарили: 45 раз
Re: почему так может быть?
Сейчас проверил: оба - метод setProperty и функция setGlobal пишут в дубликат свойства, при этом getProperty считывает из первоначально созданного свойства, а getGlobal из дубликата...
Не знаю стоит ли копать дальше... Важнее ведь почему появились дубликаты, а не как система на них реагирует.
Попробую дубликаты удалить, их всего 41. За сутки не добавилось)))
UPD: Удалил прямо в базе один из дубликатов, вместо него два дубликата появилось... (systemStates.onNewMinute продолжал перезаписывать stateColor двумя способами)))))
Жаль, что метод грубой силы не сработал)
Не знаю стоит ли копать дальше... Важнее ведь почему появились дубликаты, а не как система на них реагирует.
Попробую дубликаты удалить, их всего 41. За сутки не добавилось)))
UPD: Удалил прямо в базе один из дубликатов, вместо него два дубликата появилось... (systemStates.onNewMinute продолжал перезаписывать stateColor двумя способами)))))
Жаль, что метод грубой силы не сработал)
-
- Сообщения: 238
- Зарегистрирован: Чт ноя 26, 2015 10:54 pm
- Благодарил (а): 38 раз
- Поблагодарили: 45 раз
Re: почему так может быть?
Пересмотрел еще раз, что происходит.
Проблема в методе getProperty.
Фатальное отличие set/getProperty от set/getGlobal (помимо чтения/записи кэша памяти функцией) в том, что
getProperty ищет запись в таблице pvalues локально, по полю PROPERTY_NAME!!! в отличие от остальных функций, которые отрабатывают с учетом связи objects<-properties<-pvalues.
В итоге имеем:
- по какой-то причине ломается таблица properties;
- при попытке записи свойства объекта (неважно как - setProperty или setGlobal) появляются НОВЫЕ записи для этого свойства в таблицах properties, pvalues
- старая запись в pvalues становится 'мусором'
- при этом, в новой записи все хорошо, она связана с другими таблицами. Только одно но: поле PROPERTY_NAME не заполнено. Насколько я разглядел оно заполнится теперь только в startup_maintanence.php, т.е. после перезагрузки.
- setProperty и set/getGlobal работают как часы
- getProperty же находит старую, мусорную запись, в которой заполнено поле PROPERTY_NAME
Хотелось бы попросить Сергея решить что с этим делать)))
- мне кажется что достаточно заполнить $v['PROPERTY_NAME']=$this->object_title.'.'.$property; в setProperty
- из startup_maintanence.php костыль можно убрать)))
Проблема в методе getProperty.
Фатальное отличие set/getProperty от set/getGlobal (помимо чтения/записи кэша памяти функцией) в том, что
getProperty ищет запись в таблице pvalues локально, по полю PROPERTY_NAME!!! в отличие от остальных функций, которые отрабатывают с учетом связи objects<-properties<-pvalues.
В итоге имеем:
- по какой-то причине ломается таблица properties;
- при попытке записи свойства объекта (неважно как - setProperty или setGlobal) появляются НОВЫЕ записи для этого свойства в таблицах properties, pvalues
- старая запись в pvalues становится 'мусором'
- при этом, в новой записи все хорошо, она связана с другими таблицами. Только одно но: поле PROPERTY_NAME не заполнено. Насколько я разглядел оно заполнится теперь только в startup_maintanence.php, т.е. после перезагрузки.
- setProperty и set/getGlobal работают как часы
- getProperty же находит старую, мусорную запись, в которой заполнено поле PROPERTY_NAME
Хотелось бы попросить Сергея решить что с этим делать)))
- мне кажется что достаточно заполнить $v['PROPERTY_NAME']=$this->object_title.'.'.$property; в setProperty
- из startup_maintanence.php костыль можно убрать)))