Beispiel #1
0
$pool = new ClientPool('0.0.0.0', $port = 8001);
// получает PID и выдает ссылку на трансляцию
$ace = new AceConnect($key);
// управляет трансляциями. заказывает их у Ace и раздает клиентам из pool
$streams = new StreamsManager($ace, $pool);
// при рефакторинге роль совершенно изменилась и не соответствует имени класса
// занимается отрисовкой ncurses интерфейса
$EVENTS = new EventController();
$EVENTS->init(' AcePHProxy v.' . ACEPHPROXY_VERSION . ' running on port ' . $port);
// мониторим новых клиентов, запускаем для них трансляцию или, если такая запущена, копируем данные из нее
// мониторим дисконнекты и убиваем трансляцию, если клиентов больше нет (пока можно сделать ее вечноживой)
// мониторим проблемы с трансляцией и делаем попытку ее перезапустить в случае чего
$last_check = 0;
$ctrlC = false;
if (!function_exists('pcntl_signal')) {
    $EVENTS->error('pcntl function not found. Ctrl+C will not work properly');
} else {
    $EVENTS->log('Setting up Ctrl+C', EventController::CLR_GREEN);
    declare (ticks=1000);
    function signalHandler()
    {
        global $ctrlC, $EVENTS;
        $ctrlC = true;
        $EVENTS->error('Ctrl+C caught. Exiting');
    }
    pcntl_signal(SIGINT, 'signalHandler');
}
// сюда будем писать инфу, выводимую на экран
$rows = array();
while (!$ctrlC) {
    $check_inet = time() - $last_check > 10;