morozovsk\websocket\Server::start PHP Method

start() public method

public start ( )
    public function start()
    {
        $pid = @file_get_contents($this->config['pid']);
        if ($pid) {
            if (posix_getpgid($pid)) {
                die("already started\r\n");
            } else {
                unlink($this->config['pid']);
            }
        }
        if (empty($this->config['websocket']) && empty($this->config['localsocket']) && empty($this->config['master'])) {
            die("error: config: !websocket && !localsocket && !master\r\n");
        }
        $server = $service = $master = null;
        if (!empty($this->config['websocket'])) {
            //open server socket
            $server = stream_socket_server($this->config['websocket'], $errorNumber, $errorString);
            stream_set_blocking($server, 0);
            if (!$server) {
                die("error: stream_socket_server: {$errorString} ({$errorNumber})\r\n");
            }
        }
        if (!empty($this->config['localsocket'])) {
            //create a socket for the processing of messages from scripts
            $service = stream_socket_server($this->config['localsocket'], $errorNumber, $errorString);
            stream_set_blocking($service, 0);
            if (!$service) {
                die("error: stream_socket_server: {$errorString} ({$errorNumber})\r\n");
            }
        }
        if (!empty($this->config['master'])) {
            //create a socket for the processing of messages from slaves
            $master = stream_socket_client($this->config['master'], $errorNumber, $errorString);
            stream_set_blocking($master, 0);
            if (!$master) {
                die("error: stream_socket_client: {$errorString} ({$errorNumber})\r\n");
            }
        }
        if (!empty($this->config['eventDriver']) && $this->config['eventDriver'] == 'libevent') {
            class_alias('morozovsk\\websocket\\GenericLibevent', 'morozovsk\\websocket\\Generic');
        } elseif (!empty($this->config['eventDriver']) && $this->config['eventDriver'] == 'event') {
            class_alias('morozovsk\\websocket\\GenericEvent', 'morozovsk\\websocket\\Generic');
        } else {
            class_alias('morozovsk\\websocket\\GenericSelect', 'morozovsk\\websocket\\Generic');
        }
        file_put_contents($this->config['pid'], posix_getpid());
        //list($pid, $master, $workers) = $this->spawnWorkers();//create child processes
        /*if ($pid) {//мастер
              file_put_contents($this->config['pid'], $pid);
              fclose($server);//master will not handle incoming connections on the main socket
              $masterClass = $this->config['master']['class'];
              $master = new $masterClass ($service, $workers);//master will process messages from the script and send them to a worker
              if (!empty($this->config['master']['timer'])) {
                  $master->timer = $this->config['worker']['timer'];
              }
              $master->start();
          } else {//воркер*/
        $workerClass = $this->config['class'];
        $worker = new $workerClass($server, $service, $master);
        if (!empty($this->config['timer'])) {
            $worker->timer = $this->config['timer'];
        }
        $worker->start();
        //}
    }