Jenner\SimpleFork\Process::start PHP Метод

start() публичный Метод

start the sub process and run the callback
public start ( ) : string
Результат string pid
    public function start()
    {
        if (!empty($this->pid) && $this->isRunning()) {
            throw new \LogicException("the process is already running");
        }
        $callback = $this->getCallable();
        $pid = pcntl_fork();
        if ($pid < 0) {
            throw new \RuntimeException("fork error");
        } elseif ($pid > 0) {
            $this->pid = $pid;
            $this->running = true;
            $this->started = true;
        } else {
            $this->pid = getmypid();
            $this->signal();
            foreach ($this->signal_handlers as $signal => $handler) {
                pcntl_signal($signal, $handler);
            }
            call_user_func($callback);
            exit(0);
        }
    }

Usage Example

Пример #1
0
 public function testWait()
 {
     $this->process_thread->start();
     $this->process_thread->wait();
     $this->assertEquals(0, $this->process_thread->exitCode());
     $this->assertEquals(0, $this->process_thread->errno());
     $this->process_runable->start();
     $this->process_runable->wait();
     $this->assertEquals(0, $this->process_runable->exitCode());
     $this->assertEquals(0, $this->process_runable->errno());
     $this->process_callback->start();
     $this->process_callback->wait();
     $this->assertEquals(0, $this->process_callback->exitCode());
     $this->assertEquals(0, $this->process_callback->errno());
 }
All Usage Examples Of Jenner\SimpleFork\Process::start