示例#1
0
 public function testRegisterProcessTerminatesExisting()
 {
     $pidFolder = 'mfs://stubber/process';
     $this->mockFs->getFileSystem()->addDirectory('process', '/stubber');
     $this->mockFs->getFileSystem()->addFile('127.0.0.1:8080', 1234, '/stubber/process');
     $this->mockFilesystem->shouldReceive('exists')->with($pidFolder)->andReturn(true);
     $this->mockFilesystem->shouldReceive('remove')->with($pidFolder . '/127.0.0.1:8080')->andReturn(true);
     $processManager = new ProcessManager($this->mockFilesystem, $this->mockFinder, $pidFolder);
     $processManager->registerProcess(new Process(1234), '127.0.0.1', 'mock');
     $this->assertSame('1234', file_get_contents($pidFolder . '/127.0.0.1:mock'));
 }
示例#2
0
 /**
  * Start the server
  *
  * @return Server
  * @throws SocketConnectionException
  */
 public function start()
 {
     $this->primer->prepare();
     $server = $this;
     $processManager = $this->processManager;
     $this->process = $this->processManager->parallel(function (\ProcessControl\Process $process) use($server, $processManager) {
         try {
             $processManager->registerProcess($process, $server->getHost(), $server->getPort());
             $server->getSocketServer()->listen($server->getPort(), $server->getHost());
         } catch (ConnectionException $e) {
             $processManager->terminateProcess($process);
         }
         $server->getLoop()->run();
     });
     return $this;
 }