Проблема с запуском цикла

Проблемы/вопросы, связанные с запуском под различными платформами и конфигурациями.

Модератор: immortal

Galakart
Сообщения: 66
Зарегистрирован: Вт авг 06, 2013 3:49 pm
Откуда: Новокузнецк
Благодарил (а): 0
Поблагодарили: 7 раз

Re: Проблема с запуском цикла

Сообщение Galakart » Ср ноя 20, 2013 5:34 am

Подскажите, от чего примерно через полдня работы сервера, внезапно останавливается цикл ping? В debmes пишет:
07:15:45 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_ping.php --params "a:0:{}" (at /var/www/lib/general.class.php:391)
Такое началось дня три назад
Linux, Raspberry pi
Мой профиль в CONNECT
MajorDroid
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Проблема с запуском цикла

Сообщение sergejey » Ср ноя 20, 2013 11:43 am

Galakart писал(а):Подскажите, от чего примерно через полдня работы сервера, внезапно останавливается цикл ping? В debmes пишет:
07:15:45 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_ping.php --params "a:0:{}" (at /var/www/lib/general.class.php:391)
Такое началось дня три назад
А до этой надписи какие-нибудь ошибки не пишутся в лог?

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Galakart
Сообщения: 66
Зарегистрирован: Вт авг 06, 2013 3:49 pm
Откуда: Новокузнецк
Благодарил (а): 0
Поблагодарили: 7 раз

Re: Проблема с запуском цикла

Сообщение Galakart » Ср ноя 20, 2013 11:50 am

Нет, ни до ни после, ошибок нет
Linux, Raspberry pi
Мой профиль в CONNECT
MajorDroid
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Проблема с запуском цикла

Сообщение sergejey » Ср ноя 20, 2013 12:28 pm

Galakart писал(а):Нет, ни до ни после, ошибок нет
Ещё вопрос -- может ли это быть связано с каким-то из запрограммированных реакция на появление/пропажу устройства из сети? Т.е. возможен такой вариант -- должен был выполниться какой-то код, но вместо этого упал цикл опроса. Если бы удалось узнать подобную зависимость, то проще было бы копать глубже.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Galakart
Сообщения: 66
Зарегистрирован: Вт авг 06, 2013 3:49 pm
Откуда: Новокузнецк
Благодарил (а): 0
Поблагодарили: 7 раз

Re: Проблема с запуском цикла

Сообщение Galakart » Чт ноя 21, 2013 6:28 am

sergejey писал(а):Т.е. возможен такой вариант -- должен был выполниться какой-то код, но вместо этого упал цикл опроса.
Точно :) Цикл падал, когда одно из устройств дважды появлялось онлайн в домашней сети. Дело было в самописном методе username.gotHome, хотя странно что он вызывал именно падение цикла, вроде ничего необычного не содержал.
Linux, Raspberry pi
Мой профиль в CONNECT
MajorDroid
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Проблема с запуском цикла

Сообщение Urbas81 » Чт ноя 21, 2013 5:40 pm

Я кажется нашел причину зависания, похоже все дело в командах которые даются на сетевые ус-ва, сначала я использовал file_get_contents, все работало пока ус-во было в сети, как только оно пропадает, останов цикла, висит пока ус-во не появится в сети, затем я перешел на a-. с таймаутом, но похоже у всех у них какя-то завязка на cycle_main.php, при исчезновении ус-ва из сети останавливается именно на этом цикле. на соседнем форуме предложили вариант с exec("$cmd > ip &"); поставил, пока ус-во в сети все хорошо, запросы отсылает, выключил ус-во висит все.
Как побороть, у меня в oneNewminute есть команды сетевым ус-вам, хоть я их и сделал чтоб выполнялись только когда есть св-во в сети, через модуль ус-ва онлайн, но похоже если ус-во уже не в сети, а флаг еще не установился, то имеем висяк.
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Проблема с запуском цикла

Сообщение sergejey » Чт ноя 21, 2013 6:16 pm

Urbas81 писал(а):Я кажется нашел причину зависания, похоже все дело в командах которые даются на сетевые ус-ва, сначала я использовал file_get_contents, все работало пока ус-во было в сети, как только оно пропадает, останов цикла, висит пока ус-во не появится в сети, затем я перешел на a-. с таймаутом, но похоже у всех у них какя-то завязка на cycle_main.php, при исчезновении ус-ва из сети останавливается именно на этом цикле. на соседнем форуме предложили вариант с exec("$cmd > ip &"); поставил, пока ус-во в сети все хорошо, запросы отсылает, выключил ус-во висит все.
Как побороть, у меня в oneNewminute есть команды сетевым ус-вам, хоть я их и сделал чтоб выполнялись только когда есть св-во в сети, через модуль ус-ва онлайн, но похоже если ус-во уже не в сети, а флаг еще не установился, то имеем висяк.
Как вариант, использовать

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

$content=getURL('http://устройство/',0);
getURL более безопасная команда чем file_get_contents, потому что в ней уже прописан тайм-аут в 30 секунд и висяка не образуется

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Urbas81
Сообщения: 289
Зарегистрирован: Вс сен 16, 2012 9:39 am
Благодарил (а): 0
Поблагодарили: 1 раз

Re: Проблема с запуском цикла

Сообщение Urbas81 » Пт ноя 22, 2013 9:40 am

sergejey писал(а):
Urbas81 писал(а):Я кажется нашел причину зависания, похоже все дело в командах которые даются на сетевые ус-ва, сначала я использовал file_get_contents, все работало пока ус-во было в сети, как только оно пропадает, останов цикла, висит пока ус-во не появится в сети, затем я перешел на a-. с таймаутом, но похоже у всех у них какя-то завязка на cycle_main.php, при исчезновении ус-ва из сети останавливается именно на этом цикле. на соседнем форуме предложили вариант с exec("$cmd > ip &"); поставил, пока ус-во в сети все хорошо, запросы отсылает, выключил ус-во висит все.
Как побороть, у меня в oneNewminute есть команды сетевым ус-вам, хоть я их и сделал чтоб выполнялись только когда есть св-во в сети, через модуль ус-ва онлайн, но похоже если ус-во уже не в сети, а флаг еще не установился, то имеем висяк.
Как вариант, использовать

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

$content=getURL('http://устройство/',0);
getURL более безопасная команда чем file_get_contents, потому что в ней уже прописан тайм-аут в 30 секунд и висяка не образуется

Как раз эта команда и использовалась, может и не в этом дело, вчера применил таймаут для file_get_contents, посмотрю как изменится ситуация.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: Проблема с запуском цикла

Сообщение dmw » Вт ноя 26, 2013 8:58 pm

после обновления получил останов циклов:

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

20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_execs.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_onewire_starred.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_snmp.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_onewire.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_states.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_main.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_bluetooth.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_arduino.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_skype.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_scheduler.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_zwave.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_rss.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_ping.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_webvars.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_watchfolders.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Starting ./scripts/cycle_X101_skype.php ...  (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Executing (exclusive): mplayer -af volume=-30 /var/www/sounds/dingdong.mp3 (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Executing (exclusive): mplayer -af volume=-30 /var/www/cached/voice/a088c8731c960271fe250482a253cc46.mp3 (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_execs.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_snmp.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_states.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_main.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_rss.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_bluetooth.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_scheduler.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_onewire_starred.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_onewire.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_watchfolders.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_skype.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_zwave.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:41 DEBUG [DebMes]: Closing thread: DISPLAY=:101 php ./scripts/cycle_X101_skype.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:46:46 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_ping.php --params "a:0:{}" (at /var/www/lib/general.class.php:391) 
20:47:15 DEBUG [DebMes]: Closing thread: php -q ./scripts/cycle_webvars.php --params "a:0:{}" (at /var/www/lib/general.class.php:391)
Xray показывает что работает только ThisComputer.cycle_statesRun
В как побороть? Где искать?
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: Проблема с запуском цикла

Сообщение sergejey » Ср ноя 27, 2013 9:25 am

dmw писал(а):Xray показывает что работает только ThisComputer.cycle_statesRun
В как побороть? Где искать?
Надо попробовать запустить цилы отдельно и посмотреть как они работают
к примеру из папки /var/www выполнить php ./scripts/cycle_main.php
ещё, как вариант, проверить нет ли в /var/www файла reboot -- может по какой-то причине он там не удаляется и система закрывает циклы из-за его наличия.
А цикл cycle_statesRun будет работать потому, что он дополнительно ещё через веб-интерфейс вызывается, как раз, чтобы рассказать о проблеме с циклами, если они как положено не работают.

P.S. ещё один вариант -- проверить вручную все ли файлы обновились, потому что с Linux-ом бывает, что не всё переписалось из обновления.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить