Страница 49 из 120

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 2:57 am
Sapizdullin
sergejey
Все-таки с этим нужно что-то делать.

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

02:50:26 0.59520500 Warning: cross-linked call of OfficeSocket3.StatusText
log:
OfficeSocket3.statusText -> 
OfficeSocket3.StatusText -> 
OfficeSocket3.StatusText
Это результат работы метода класса:

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

if ($this->GetProperty('status')==0);
if ($this->getProperty('status')) { 
$this->setProperty('statusText','Включено');
} else {
$this->setProperty('statusText','Выключено');
}
Причем с каждым прилетом данных по MQTT. Ил я чего-то не пониманию, или это грабли. Больше в данном классе нет таких методов. Класс построен соответственно
СпойлерПоказать
Снимок.PNG
Снимок.PNG (5.63 КБ) 5046 просмотров
Получается по логике что ругается на

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

(in_array($current_call,$call_stack)) {
        [b]$call_stack[]=$current_call;[/b]
        DebMes("Warning: cross-linked call of ".$current_call."\nlog:\n".implode(" -> \n",$call_stack));
        return 0; 
Я так понимаю - вызывается метод который уже работает? Но других-то нету!

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 7:07 am
nick7zmail
Sapizdullin писал(а):

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

02:50:26 0.59520500 Warning: cross-linked call of OfficeSocket3.StatusText
log:
OfficeSocket3.statusText -> 
OfficeSocket3.StatusText -> 
OfficeSocket3.StatusText
Это результат работы метода класса:

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

if ($this->GetProperty('status')==0);
if ($this->getProperty('status')) { 
$this->setProperty('statusText','Включено');
} else {
$this->setProperty('statusText','Выключено');
} 
Причем с каждым прилетом данных по MQTT. Ил я чего-то не пониманию, или это грабли. Больше в данном классе нет таких методов. Класс построен соответственно
Во-первых на кой первая строка в методе? Она по факту у вас ничего не делает сейчас.
Во-вторых надо смотреть на взаимосвязи между свойствами и методами. Ошибка говорит, что у вас метод вызывается сам из себя. Возможно вы его привязали к изменению statusText. Или запускаете принудительно из mqtt, и он одновременно привязан к status.

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 7:07 am
nick7zmail
Sapizdullin писал(а): Присоединяюсь к вопросу. Как их удалить?
Очистить вы их очистили - но это не значит, что они удалены. Они существуют просто как пустые методы...вы зайдите ещё раз туда, и нажмите внизу кнопку "Удалить". Тогда должны пропасть.

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 8:17 am
Sapizdullin
nick7zmail писал(а):
Sapizdullin писал(а):

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

02:50:26 0.59520500 Warning: cross-linked call of OfficeSocket3.StatusText
log:
OfficeSocket3.statusText -> 
OfficeSocket3.StatusText -> 
OfficeSocket3.StatusText
Это результат работы метода класса:

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

if ($this->GetProperty('status')==0);
if ($this->getProperty('status')) { 
$this->setProperty('statusText','Включено');
} else {
$this->setProperty('statusText','Выключено');
} 
Причем с каждым прилетом данных по MQTT. Ил я чего-то не пониманию, или это грабли. Больше в данном классе нет таких методов. Класс построен соответственно
Во-первых на кой первая строка в методе? Она по факту у вас ничего не делает сейчас.
Во-вторых надо смотреть на взаимосвязи между свойствами и методами. Ошибка говорит, что у вас метод вызывается сам из себя. Возможно вы его привязали к изменению statusText. Или запускаете принудительно из mqtt, и он одновременно привязан к status.
С первым вопросом - спасибо за подсказку, убрал. Со вторым - он привязан именно к status.
СпойлерПоказать
Снимок.PNG
Снимок.PNG (36.89 КБ) 5022 просмотра
и вызывается именно оттуда. Из MQTT я его не вызываю. Там просто привязка GPIO к обьекту (OfficeSocket3.status).

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 8:21 am
Sapizdullin
nick7zmail писал(а):
Sapizdullin писал(а): Присоединяюсь к вопросу. Как их удалить?
Очистить вы их очистили - но это не значит, что они удалены. Они существуют просто как пустые методы...вы зайдите ещё раз туда, и нажмите внизу кнопку "Удалить". Тогда должны пропасть.
Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 10:18 am
nick7zmail
Sapizdullin писал(а): Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.
Тогда, наверное, стоило воссоздать класс, потом удалить из объекта, потом удалить из класса. Хотя class_id наверное у записи другой был бы...да...с этим сложно...только из таблицы напрямую наверное удалять.
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой. По хорошему бы Сергею прописать, чтобы за классовым методом сносились все методы объектов у которых родительский - тот самый, который сносят. Это было бы правильнее, и не приводило бы к описанной ситуации.
Sapizdullin писал(а):Со вторым - он привязан именно к status.
Метод понятно, что к status привязан. При этом ему ничего не мешает быть привязанным одновременно и к statusText. Этот момент я и говорил проверить. Метод кстати классовый? Или объекта? Проверьте и тот и тот, чтобы ничего не приводило к повторному вызову самого себя.
Как правило такие ошибки именно из-за недоработок в коде методов/сценариев, а не из-за какой-либо системной ошибки.

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 10:41 am
Vovix
nick7zmail писал(а):
Sapizdullin писал(а): Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.
Тогда, наверное, стоило воссоздать класс, потом удалить из объекта, потом удалить из класса. Хотя class_id наверное у записи другой был бы...да...с этим сложно...только из таблицы напрямую наверное удалять.
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой. По хорошему бы Сергею прописать, чтобы за классовым методом сносились все методы объектов у которых родительский - тот самый, который сносят. Это было бы правильнее, и не приводило бы к описанной ситуации.
Подтверждаю, эти "хвосты" возникают при неправильном удалении (условно не правильном)!
Если это у существующем классе, то достаточно создать заново метод с тем-же именем, а потом его правильно удалить!!!

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 10:59 am
Sapizdullin
nick7zmail писал(а):
Sapizdullin писал(а):Со вторым - он привязан именно к status.
Метод понятно, что к status привязан. При этом ему ничего не мешает быть привязанным одновременно и к statusText. Этот момент я и говорил проверить. Метод кстати классовый? Или объекта? Проверьте и тот и тот, чтобы ничего не приводило к повторному вызову самого себя.
Как правило такие ошибки именно из-за недоработок в коде методов/сценариев, а не из-за какой-либо системной ошибки.
Только к классовому. Если делаю для объекта (с поправками естественно) то варнинга нет. Причем если в классе нет так сказать подкласса - то будет две строчки а не три. Но делать в каждом объекте такой метод - брр у меня 15 розеток..
Только что проверил, привязал Broadlink розетку к объекту - такая же байда. Так что MQTT не причем.

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

10:57:09 0.25976300 Warning: cross-linked call of WhiteLight.StatusText
log:
WhiteLight.statusText -> 
WhiteLight.StatusText -> 
WhiteLight.StatusText
Понимаю что не ошибка, но лог пухнет и раздражает...

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 11:00 am
Sapizdullin
Vovix писал(а):
nick7zmail писал(а):
Sapizdullin писал(а): Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.
Тогда, наверное, стоило воссоздать класс, потом удалить из объекта, потом удалить из класса. Хотя class_id наверное у записи другой был бы...да...с этим сложно...только из таблицы напрямую наверное удалять.
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой. По хорошему бы Сергею прописать, чтобы за классовым методом сносились все методы объектов у которых родительский - тот самый, который сносят. Это было бы правильнее, и не приводило бы к описанной ситуации.
Подтверждаю, эти "хвосты" возникают при неправильном удалении (условно не правильном)!
Если это у существующем классе, то достаточно создать заново метод с тем-же именем, а потом его правильно удалить!!!
Хм.. А как правильно? чтоб не наступать на грабли?

Re: Ошибки/проблемы/неисправности системы

Добавлено: Ср мар 21, 2018 11:03 am
nick7zmail
Sapizdullin писал(а): Хм.. А как правильно? чтоб не наступать на грабли?
Я ж описал
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой.