コード例 #1
0
ファイル: acePHP.php プロジェクト: svgorbunov/AcePHProxy
// - TODO определять отвалившийся клиент. тут только по таймауту
// - TODO классы исключений и коды ошибок
// - TODO для торрентов из нескольких видеофайлов (сезон сериала например) выдавать меню (плейлист)
define('ACEPHPROXY_VERSION', '0.6.2');
require_once dirname(__FILE__) . '/class.client_pool.php';
require_once dirname(__FILE__) . '/class.stream_client.php';
require_once dirname(__FILE__) . '/class.stream_unit.php';
require_once dirname(__FILE__) . '/class.ace_connect.php';
require_once dirname(__FILE__) . '/class.ncurses_ui.php';
require_once dirname(__FILE__) . '/class.streams_mgr.php';
mb_internal_encoding('UTF-8');
// создаем коннект к acestream, запускаем клиентский сокет
// изначально был этот ключ
$key = 'n51LvQoTlJzNGaFxseRK-uvnvX-sD4Vm5Axwmc4UcoD-jruxmKsuJaH0eVgE';
// создает сокет сервера трансляций и управляет коннектами клиентов к демону
$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');
コード例 #2
0
ファイル: CollectionTest.php プロジェクト: sokil/php-mongo
 /**
  * @dataProvider hasDocumentDataProvider
  */
 public function testHasDocument($collection1Data, $collection2Data, $isEquals)
 {
     $clientPool = new ClientPool(array('server1' => array('dsn' => 'someDsn1'), 'server2' => array('dsn' => 'someDsn2')));
     $collection1 = $clientPool->get($collection1Data[0])->getDatabase($collection1Data[1])->getCollection($collection1Data[2]);
     $collection2 = $clientPool->get($collection2Data[0])->getDatabase($collection2Data[1])->getCollection($collection2Data[2]);
     $document = $collection1->createDocument();
     $this->assertEquals($isEquals, $collection2->hasDocument($document));
 }
コード例 #3
0
 public function testGet_DsnNotSpecified()
 {
     $pool = new ClientPool(array('connect1' => array('defaultDatabase' => 'db2', 'mapping' => array('db1' => array('col1' => '\\Sokil\\Mongo\\Collection1', 'col2' => '\\Sokil\\Mongo\\Collection2'), 'db2' => array('col1' => '\\Sokil\\Mongo\\Collection3', 'col2' => '\\Sokil\\Mongo\\Collection4')))));
     $this->assertEquals(Client::DEFAULT_DSN, $pool->get('connect1')->getDsn());
 }