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

Re: почему так может быть?

Добавлено: Пт дек 04, 2015 12:19 am
triada13
Vovix писал(а):
zelevova писал(а):Отличная мысль. Надо будет попробовать так длительные процедуры запускать. А я не мог придумать как параллельно процесс запустить.
Я попробовал
это: callMethod("Izhevsk.sensors");
заменил на это: setTimeOut('IzhevskSensor','callMethod("Izhevsk.sensors");',1);

результатом пока очень доволен! метод onNewHour стал просто "летать"!
а метод Izhevsk.sensors наблюдаю запущенным на время в X-Ray -> Timers
т.е. все ок! Еще раз СПАСИБО за идею! (не зря сюда написал :) )
Вы эту строчку прописали в onNewHour?

Re: почему так может быть?

Добавлено: Пт дек 04, 2015 1:44 am
Vovix
triada13 писал(а):....
Вы эту строчку прописали в onNewHour?
Да, конечно!

Re: почему так может быть?

Добавлено: Вт дек 22, 2015 10:50 am
nick7zmail
Помогите пожалуйста решить проблему с ClockChime.OnNewHour!
Недавно заметил что перестает отрабатывать OnNewHour через некоторое время (раз 15-25 отрабатывает, а потом отказывается)...Симптомы похожие. Сделал все что описано в этой теме, единственные 2 метода, которые оттуда вызываются - вызываются через SetTimeOut()...добавил туда только строчку для контроля за работой метода

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

sg('ThisComputer.onnewhourcheck', gg('ThisComputer.timenow').' '.gg('ThisComputer.datenow')); 
Метод загнулся дня 3 назад, и все еще не запускался ниразу. При этом классовый метод выполняется исправно. Где посмотреть - что с ним происходит?

Re: почему так может быть?

Добавлено: Вт дек 22, 2015 5:26 pm
ipz
Я у себя заметил, что не отрабатывают методы объектов класса systemStates:
Communication.checkState
System.checkState

Цикл cycle_states.php запущен, методы регулярно вызываются, но состояние системы отражается некорректно.
Оказалось, что не отрабатывают конструкции, использующие указатель $this.
Перезагрузка помогает, но временно.
Заменил $this->setProperty, $this->getProperty на setGlobal, getGlobal - методы отрабатывают.
Но проблема то осталась. Пока не знаю куда дальше копать.
Не знаю как проверить что $this "поломался"
$this.title выдает какую-то билеберду.

Пока вставил в код проверку на
$this->getProperty('Свойство')==getGlobal('Объект.Свойство')
По крайней мере буду знать, что система не функционирует.

Re: почему так может быть?

Добавлено: Вт дек 22, 2015 5:55 pm
Vovix
nick7zmail писал(а):Помогите пожалуйста решить проблему с ClockChime.OnNewHour!
Недавно заметил что перестает отрабатывать OnNewHour через некоторое время (раз 15-25 отрабатывает, а потом отказывается)...Симптомы похожие. Сделал все что описано в этой теме, единственные 2 метода, которые оттуда вызываются - вызываются через SetTimeOut()...добавил туда только строчку для контроля за работой метода

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

sg('ThisComputer.onnewhourcheck', gg('ThisComputer.timenow').' '.gg('ThisComputer.datenow'));
Метод загнулся дня 3 назад, и все еще не запускался ниразу. При этом классовый метод выполняется исправно. Где посмотреть - что с ним происходит?
вот помню некоторое время назад(несколько месяцев) была такая проблема: перестал нормально работать(запускаться) OnNewHour, ковырялся тогда долго и обнаружил, что он у меня так-же из двух частей был, т.е. был код как в методе класса так и в методе объекта...
решилось просто объединением кода (ну а потом даже просто удалением одной части) и помещением в одно место - метод именно объекта... и стало нормально работать (ну так-же до некоторых описанных ранее мной моментов)! Вот!

Re: почему так может быть?

Добавлено: Вт дек 22, 2015 9:45 pm
nick7zmail
Vovix писал(а): решилось просто объединением кода (ну а потом даже просто удалением одной части) и помещением в одно место - метод именно объекта... и стало нормально работать (ну так-же до некоторых описанных ранее мной моментов)! Вот!
Ну по скольку метод класса отлично работает - думаю если туда все переместить - тоже будет нормально работать все...но все таки это не нормальный ход вещей)) Как минимум Сергея в известность поставить надо...может быть когда-нибудь найдется причина - дак включит в обнову.

Re: почему так может быть?

Добавлено: Ср дек 23, 2015 10:55 am
sergejey
Добавил себе в список "посмотреть", попробую разобраться.

Re: почему так может быть?

Добавлено: Чт дек 24, 2015 5:07 pm
ipz
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;

Re: почему так может быть?

Добавлено: Чт дек 24, 2015 10:50 pm
ipz
Сейчас проверил: оба - метод setProperty и функция setGlobal пишут в дубликат свойства, при этом getProperty считывает из первоначально созданного свойства, а getGlobal из дубликата...

Не знаю стоит ли копать дальше... Важнее ведь почему появились дубликаты, а не как система на них реагирует.
Попробую дубликаты удалить, их всего 41. За сутки не добавилось)))

UPD: Удалил прямо в базе один из дубликатов, вместо него два дубликата появилось... (systemStates.onNewMinute продолжал перезаписывать stateColor двумя способами)))))

Жаль, что метод грубой силы не сработал)

Re: почему так может быть?

Добавлено: Пт дек 25, 2015 11:39 pm
ipz
Пересмотрел еще раз, что происходит.

Проблема в методе 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 костыль можно убрать)))