コード例 #1
0
ファイル: Run.php プロジェクト: ovr/php-pm-reactor
 public function execute(InputInterface $input, OutputInterface $output)
 {
     /**
      * @var \Symfony\Component\Console\Helper\FormatterHelper
      */
     $formatter = $this->getHelper('formatter');
     $output->writeln($formatter->formatSection('IO', 'Start development server'));
     $bridgeName = $input->getOption('bridge');
     switch (strtolower($bridgeName)) {
         case 'phalcony':
             $bridge = new Phalcony();
             break;
         case 'hello':
         default:
             $bridge = new SimpleBridge();
             break;
     }
     $bridge->on('error', function (Exception $e) use(&$formatter, $output) {
         $output->writeln($formatter->formatBlock(array('[App]', $e->getMessage(), 'in the ' . $e->getFile() . ' file on ' . $e->getLine() . ' line'), 'error'));
     });
     $listen = $input->getOption('listen');
     $port = $input->getOption('port');
     $count = $input->getOption('count');
     for ($i = 0; $i < $count; $i++) {
         $this->newWorker($output, $formatter, $listen, $port + $i, clone $bridge);
     }
     $loop = Factory::create();
     $loop->addPeriodicTimer(1, function () use(&$output) {
         $output->writeln('Tick tak, bitch <3');
     });
     $loop->run();
 }
コード例 #2
0
ファイル: Start.php プロジェクト: ovr/php-pm-reactor
 public function execute(InputInterface $input, OutputInterface $output)
 {
     /**
      * @var \Symfony\Component\Console\Helper\FormatterHelper
      */
     $formatter = $this->getHelper('formatter');
     $output->writeln($formatter->formatSection('IO', 'Start development server'));
     //        $loop = \React\EventLoop\Factory::create();
     $bridgeName = $input->getOption('bridge');
     switch (strtolower($bridgeName)) {
         case 'phalcony':
             $bridge = new Phalcony();
             break;
         case 'hello':
         default:
             $bridge = new SimpleBridge();
             break;
     }
     $bridge->on('open', function (ConnectionInterface $conn, RequestInterface $request = null) use(&$formatter, $output) {
         $section = $formatter->formatSection('IO', 'Connection is open from ' . $request->getHost() . ' on ' . date('h:i:s') . ' : ' . $request->getUrl());
         $output->writeln($section);
     });
     $bridge->on('close', function (ConnectionInterface $conn, $timer) use(&$formatter, $output) {
         $output->writeln($formatter->formatSection('IO', sprintf('Connection is closed. Request completed %.4F sec.', $timer)));
     });
     $bridge->on('error', function (Exception $e) use(&$formatter, $output) {
         $output->writeln($formatter->formatBlock(array('[App]', $e->getMessage(), 'in the ' . $e->getFile() . ' file on ' . $e->getLine() . ' line'), 'error'));
     });
     $listen = $input->getOption('listen');
     $port = $input->getOption('port');
     $server = IoServer::factory(new HttpServer($bridge), $port, $listen);
     $server->run();
 }