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

Новые релизы, обновления и т.п.

Модератор: immortal

Аватара пользователя
Sapizdullin
Сообщения: 408
Зарегистрирован: Сб фев 18, 2017 9:47 am
Откуда: Земля
Благодарил (а): 54 раза
Поблагодарили: 61 раз

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

Сообщение Sapizdullin » Ср мар 21, 2018 2:57 am

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 КБ) 4986 просмотров
Получается по логике что ругается на

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

(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; 
Я так понимаю - вызывается метод который уже работает? Но других-то нету!
Intel(R) Core(TM) i7-6700, Debian 9 "Stretch", Zoneminder, Avreg.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Ср мар 21, 2018 7:07 am

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.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Ср мар 21, 2018 7:07 am

Sapizdullin писал(а): Присоединяюсь к вопросу. Как их удалить?
Очистить вы их очистили - но это не значит, что они удалены. Они существуют просто как пустые методы...вы зайдите ещё раз туда, и нажмите внизу кнопку "Удалить". Тогда должны пропасть.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Sapizdullin
Сообщения: 408
Зарегистрирован: Сб фев 18, 2017 9:47 am
Откуда: Земля
Благодарил (а): 54 раза
Поблагодарили: 61 раз

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

Сообщение Sapizdullin » Ср мар 21, 2018 8:17 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.
С первым вопросом - спасибо за подсказку, убрал. Со вторым - он привязан именно к status.
СпойлерПоказать
Снимок.PNG
Снимок.PNG (36.89 КБ) 4962 просмотра
и вызывается именно оттуда. Из MQTT я его не вызываю. Там просто привязка GPIO к обьекту (OfficeSocket3.status).
Intel(R) Core(TM) i7-6700, Debian 9 "Stretch", Zoneminder, Avreg.
Аватара пользователя
Sapizdullin
Сообщения: 408
Зарегистрирован: Сб фев 18, 2017 9:47 am
Откуда: Земля
Благодарил (а): 54 раза
Поблагодарили: 61 раз

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

Сообщение Sapizdullin » Ср мар 21, 2018 8:21 am

nick7zmail писал(а):
Sapizdullin писал(а): Присоединяюсь к вопросу. Как их удалить?
Очистить вы их очистили - но это не значит, что они удалены. Они существуют просто как пустые методы...вы зайдите ещё раз туда, и нажмите внизу кнопку "Удалить". Тогда должны пропасть.
Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.
Intel(R) Core(TM) i7-6700, Debian 9 "Stretch", Zoneminder, Avreg.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Ср мар 21, 2018 10:18 am

Sapizdullin писал(а): Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.
Тогда, наверное, стоило воссоздать класс, потом удалить из объекта, потом удалить из класса. Хотя class_id наверное у записи другой был бы...да...с этим сложно...только из таблицы напрямую наверное удалять.
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой. По хорошему бы Сергею прописать, чтобы за классовым методом сносились все методы объектов у которых родительский - тот самый, который сносят. Это было бы правильнее, и не приводило бы к описанной ситуации.
Sapizdullin писал(а):Со вторым - он привязан именно к status.
Метод понятно, что к status привязан. При этом ему ничего не мешает быть привязанным одновременно и к statusText. Этот момент я и говорил проверить. Метод кстати классовый? Или объекта? Проверьте и тот и тот, чтобы ничего не приводило к повторному вызову самого себя.
Как правило такие ошибки именно из-за недоработок в коде методов/сценариев, а не из-за какой-либо системной ошибки.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 531 раз
Контактная информация:

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

Сообщение Vovix » Ср мар 21, 2018 10:41 am

nick7zmail писал(а):
Sapizdullin писал(а): Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.
Тогда, наверное, стоило воссоздать класс, потом удалить из объекта, потом удалить из класса. Хотя class_id наверное у записи другой был бы...да...с этим сложно...только из таблицы напрямую наверное удалять.
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой. По хорошему бы Сергею прописать, чтобы за классовым методом сносились все методы объектов у которых родительский - тот самый, который сносят. Это было бы правильнее, и не приводило бы к описанной ситуации.
Подтверждаю, эти "хвосты" возникают при неправильном удалении (условно не правильном)!
Если это у существующем классе, то достаточно создать заново метод с тем-же именем, а потом его правильно удалить!!!
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Аватара пользователя
Sapizdullin
Сообщения: 408
Зарегистрирован: Сб фев 18, 2017 9:47 am
Откуда: Земля
Благодарил (а): 54 раза
Поблагодарили: 61 раз

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

Сообщение Sapizdullin » Ср мар 21, 2018 10:59 am

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
Понимаю что не ошибка, но лог пухнет и раздражает...
Intel(R) Core(TM) i7-6700, Debian 9 "Stretch", Zoneminder, Avreg.
Аватара пользователя
Sapizdullin
Сообщения: 408
Зарегистрирован: Сб фев 18, 2017 9:47 am
Откуда: Земля
Благодарил (а): 54 раза
Поблагодарили: 61 раз

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

Сообщение Sapizdullin » Ср мар 21, 2018 11:00 am

Vovix писал(а):
nick7zmail писал(а):
Sapizdullin писал(а): Увы дружище... Увы... Их нет нигде кроме как в дереве (общем). Не могу скрин приаттачить, потом как поудалял все объекты у которых фантомы были. Удаляешь объект вообще и потом создаешь - все нету фантома. Т.е. Создан допустим класс. В нем метод. и соответственно объект. Стоит нажать в "объекте" "метод" и оставить его пустым, он появляется в дереве. Удаляю его в классе, он в дереве есть, а в объекте его тоже нет. Фантом такой.
Тогда, наверное, стоило воссоздать класс, потом удалить из объекта, потом удалить из класса. Хотя class_id наверное у записи другой был бы...да...с этим сложно...только из таблицы напрямую наверное удалять.
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой. По хорошему бы Сергею прописать, чтобы за классовым методом сносились все методы объектов у которых родительский - тот самый, который сносят. Это было бы правильнее, и не приводило бы к описанной ситуации.
Подтверждаю, эти "хвосты" возникают при неправильном удалении (условно не правильном)!
Если это у существующем классе, то достаточно создать заново метод с тем-же именем, а потом его правильно удалить!!!
Хм.. А как правильно? чтоб не наступать на грабли?
Intel(R) Core(TM) i7-6700, Debian 9 "Stretch", Zoneminder, Avreg.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

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

Сообщение nick7zmail » Ср мар 21, 2018 11:03 am

Sapizdullin писал(а): Хм.. А как правильно? чтоб не наступать на грабли?
Я ж описал
Просто я сперва захожу в объекты (либо удаляю объекты если они не нужны), удаляю методы объекта, убеждаюсь, что их уже нет в дереве, и только потом удаляю классовый метод...по-этому не сталкивался ни разу с такой проблемой.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Закрыто