$peers = $one->getPeers(); if (empty($peers)) { $tmp[2] = 'close'; $channels[] = $tmp; } else { foreach ($peers as $peer => $client) { $tmp[5] = sprintf('%s %d%%', $client->getName(), $client->getPointerPosition()); $channels[] = $tmp; $tmp = array(0 => '', '', '', '', '', '', '', ''); } } } // это чтобы удалились все ссылки на объекты потока и клиента unset($client); unset($one); $EVENTS->tick($channels); // увеличение с 20 до 100мс улучшило ситуацию с переполнением клиентских сокетов usleep(30000); } catch (Exception $e) { $EVENTS->error($e->getMessage()); } } // тормозим все трансляции, закрываем сокеты Ace $streams->closeAll(); // AceProxy на кривой урл не выдает понятного для XBMC ответа, тот повторяет попытки открыть урл // m3u открывается долго, потому как XBMC делает по 2 инфо-запроса: HEAD и Range:0-0, на что тоже не получает внятного ответа // из-за 2 причин выше остановка потока не отрабатывает нормально (висит, пока не пройдут запросы по всем эл-там плейлиста) // ссылка критична к /stream.mp4 на хвосте ссылки (/pid/<pid>/stream.mp4) // для трансляции одного потока на несколько клиентов требует VLC // при нажатии на эл-т плейлиста XBMC замирает секунды на 3-4, затем идет Подождите, потом только пойдет видео // иногда, нажав на стоп в момент затыка, приходится долго ждать, пока пойдут данные, чтобы XBMC отвис