Глюки с переменными

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

Модератор: immortal

Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Глюки с переменными

Сообщение Alex » Пт апр 26, 2013 10:34 pm

Время от времени перестают нормально работать переменные в скриптах и методах. После перекапывания кода выясняется, что переменная просто не работает. Но если её переименовать, то всё становится нормально.

Вопрос. Переменные в скриптах и методах локальные или глобальные? Вроде бы локальные и доказательство этому куча одинаковых переменных типа $i, $v, $a и т. д. в скриптах. Но иногда такая $a (тихо!) перестаёт работать пока не переименуешь её в $a2 или $aa.

Глюк очень неприятный потому, что трудноуловимый. Столкнулся с этим уже в третий раз. Что это за гадость такая?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Глюки с переменными

Сообщение sergejey » Пн апр 29, 2013 11:30 am

Не сталкивался с подобным... В коде переменные локальные. Если будет пример кода, то смогу посмотреть, в чём дело -- может дело не в переменных, а в самом коде.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: Глюки с переменными

Сообщение Alex » Пн апр 29, 2013 1:04 pm

Сначала работало нормально с переменной $temp, потом перестало. После переименования в $temp2 снова заработало. Но это ещё догадаться надо было.

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

 $ch = curl_init('http://192.168.1.17:8085/data.json');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$ohm = curl_exec($ch);
$json = json_decode($ohm);

$cpu = $json -> {'Children'}[0] -> {'Children'}[1];
$cpu_load = $cpu -> {'Children'}[2] -> {'Children'}[0] -> {'Value'};

$temp2 = substr($cpu_load, 0, strpos($cpu_load, ' '));
$load = round($temp2, 1);
sg('analog21.val3', $load);
Pop
Сообщения: 9
Зарегистрирован: Пн фев 11, 2013 9:46 am
Откуда: Ростов-на-Дону
Благодарил (а): 0
Поблагодарили: 0

Re: Глюки с переменными

Сообщение Pop » Пн июн 17, 2013 4:28 pm

Подтверждаю, периодически перестают обновляться веб-переменные, если ее переименовать, то начинает работать. Ну или если систему перегрузить (хотя не всегда с первого раза).
Snark
Сообщения: 5
Зарегистрирован: Пн июл 01, 2013 4:18 am
Благодарил (а): 0
Поблагодарили: 0

Re: Глюки с переменными

Сообщение Snark » Пн июл 01, 2013 4:21 am

Pop писал(а):Подтверждаю, периодически перестают обновляться веб-переменные, если ее переименовать, то начинает работать. Ну или если систему перегрузить (хотя не всегда с первого раза).
Такая же штука. Сегодня вечером приду, буду смотреть к коде, или будем дружно просить помощи автора :)
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Глюки с переменными

Сообщение Jager » Пн июл 01, 2013 8:02 am

Snark писал(а):Такая же штука. Сегодня вечером приду, буду смотреть к коде, или будем дружно просить помощи автора :)
Мне в таком случае помогает функция "восстановление таблицы" phistory. Т.е. похоже что проблема образуется в момент записи в БД.
Snark
Сообщения: 5
Зарегистрирован: Пн июл 01, 2013 4:18 am
Благодарил (а): 0
Поблагодарили: 0

Re: Глюки с переменными

Сообщение Snark » Пн июл 01, 2013 9:44 am

Jager писал(а):
Snark писал(а):Такая же штука. Сегодня вечером приду, буду смотреть к коде, или будем дружно просить помощи автора :)
Мне в таком случае помогает функция "восстановление таблицы" phistory. Т.е. похоже что проблема образуется в момент записи в БД.
Всё это странно и загадочно... Сервер поднял только вчера, и на следующий же день такая ошибка. При этом ни одного аварийного завершения работы системы/компа не было.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4284
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 75 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Глюки с переменными

Сообщение sergejey » Пн июл 01, 2013 11:05 am

Ребят, я б помог, но не могу выловить такой глюк. Попробуйте найти систему его возникновения, что б можно было воспроизвести ситуацию -- это 90% пути решения проблемы :)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: Глюки с переменными

Сообщение Jager » Пн июл 01, 2013 2:28 pm

sergejey писал(а):Попробуйте найти систему его возникновения
У меня этот глюк возникает когда я открываю на редактирование ранее созданную web-переменную, после сохранения одна из переменных может перестать обновляться, причем не обязательно та которая редактировалась.
И еще меня волнует почему получается так
Изображение
хотя период обновления у всех датчиков температуры выставлен в 1 минуту, разбег в диапазоне от 1 до 5 минут.
Hitman_dc(78)
Сообщения: 45
Зарегистрирован: Пн май 13, 2013 1:49 pm
Благодарил (а): 0
Поблагодарили: 0

Re: Глюки с переменными

Сообщение Hitman_dc(78) » Вт июл 02, 2013 7:49 pm

Аналогичная проблема, веб-переменные не отрабатываю, в командной строке тишина. Пытаюсь посмотреть последнюю страницу данных таблицы phistory зависает, пытаюсь удалить данные предпоследней страницы выдаёт ошибку: Ошибка SQL-запрос:
SELECT *
FROM `phistory`
LIMIT 183720 , 30
Ответ MySQL:
#1194 - Table 'phistory' is marked as crashed and should be repaired
См.скрин.1

Значит буду восстанавливать таблицу из бэкапа(спасибо создателю за него).

PS: Может он не закрывает что-то? Т.е. посылается запрос на открытие чего-то но не посылает запрос на закрытие, перезагрузка всей системы или движка не помогает.
Вложения
Выделение_061.png
Выделение_061.png (41.9 КБ) 10554 просмотра
Windows. Версия 0.5.0b от 09.08.2013
Но планирую перейти на linux версию
Ответить