Возможно в цикле connect ошибка в строке 187 (третья у меня в сообщении). До этого переменная
$write обнуляется, а после в методе socket_select уже стоит переменная
$writ. Есть подозрение что пропущена
e в конце названия переменной, т.к. более нигде переменной $writ не нашел.
Код: Выделить всё
$write = NULL;
$except = NULL;
$num_changed_sockets = socket_select($read, $writ, $except, 0, 1);
И цикл cycle_connect.php занимает 60-90% процессорных ресурсов на Orange Pi One. Именно поэтому и полез туда посмотреть. в логах примерно такое:
Код: Выделить всё
2017-04-24 08:23:30 Listening...
2017-04-24 08:23:31 Listening...
2017-04-24 08:23:32 Listening...
2017-04-24 08:23:33 Listening...
2017-04-24 08:23:34 Listening...
2017-04-24 08:23:35 Listening...
2017-04-24 08:23:36 Listening...
2017-04-24 08:23:37 Listening...
2017-04-24 08:23:38 Listening...
2017-04-24 08:23:39 Listening...
2017-04-24 08:23:40 Listening...
2017-04-24 08:23:40 Updating auto update item (id 74 time 30): <#LANG_GENERAL_EVENTS_LOG#> (code)
2017-04-24 08:23:40 Updating auto update item (id 78 time 10): <#LANG_TEXT_BOX#>
2017-04-24 08:23:40 Updating auto update item (id 80 time 5): <#LANG_SLIDER_BOX#>
2017-04-24 08:23:40 Updating auto update item (id 105 time 30): <#LANG_GENERAL_INSIDE#> (data)
2017-04-24 08:23:40 Updating auto update item (id 97 time 10): State
2017-04-24 08:23:40 Incoming: PING!
2017-04-24 08:23:40 Sending: PONG!
OK.
2017-04-24 08:23:40 Incoming: RECEIVED: PONG!
2017-04-24 08:23:41 Listening...
2017-04-24 08:23:42 Listening...
2017-04-24 08:23:43 Listening...
2017-04-24 08:23:44 Listening...
2017-04-24 08:23:45 Listening...
2017-04-24 08:23:46 Listening...
2017-04-24 08:23:47 Listening...
2017-04-24 08:23:48 Listening...
2017-04-24 08:23:49 Listening...
2017-04-24 08:23:50 Listening...
2017-04-24 08:23:51 Listening...
2017-04-24 08:23:51 Updating auto update item (id 78 time 10): <#LANG_TEXT_BOX#>
2017-04-24 08:23:51 Updating auto update item (id 80 time 5): <#LANG_SLIDER_BOX#>
2017-04-24 08:23:51 Updating auto update item (id 97 time 10): State
2017-04-24 08:23:52 Listening...
2017-04-24 08:23:53 Listening...
2017-04-24 08:23:54 Listening...
2017-04-24 08:23:55 Listening...
2017-04-24 08:23:56 Listening...
2017-04-24 08:23:57 Listening...
2017-04-24 08:23:58 Listening...
2017-04-24 08:23:59 Listening...
2017-04-24 08:24:00 Listening...
2017-04-24 08:24:01 Listening...
Проблему загрузки проца этим скриптом решил ужаснейшим костылем - задержкой во вложенном бесконечном цикле в другой бесконечный цикл в 5 сек.
Не могу разобраться каким образом происходит выход из бесконечных циклов. Получается что он каждый такт крутится полностью и при этом во первых забивает лог (за день 24 Мб) а во вторых грузит проц.
UPD: Возможно пока нет ответа почему так происходит с загрузкой проца кому то поможет мой костыль (Внимание! Костыль не самый лучший и я не рекомендую его всем. Использовать его только при острой необходимости (нужен Connect, но проц сильно занят/греется)!)
Нужно в файле /var/www/scripts/cycle_connect.php (если вы переместили в другую папку то путь будет другой) между 179 и 180 строками добавить еще одну строку с таким содержанием:
В итоге должно получиться так:
Код: Выделить всё
while (1)
{
sleep(2);
$read = array();
$read[0] = $socket;
После этого:
- Screenshot_4.png (34.52 КБ) 9602 просмотра