protected function fork_me($method) {
        $this->wait_for_signal = true;
        $pid = pcntl_fork();
        switch ($pid) {
            case 0:
                $this->isparent = false;
                $this->parent_pid = $this->pid;
                $this->pid = getmypid();
                $this->$method();
                break;
            case -1:
                $this->log("Failed to fork");
                $this->stop_work = true;
                break;
            default:
                $this->log("Helper forked with pid $pid", GearmanManager::LOG_LEVEL_PROC_INFO);
                $this->helper_pid = $pid;
                while ($this->wait_for_signal && !$this->stop_work) {
                    usleep(5000);
                    pcntl_waitpid($pid, $status, WNOHANG);

                    if (pcntl_wifexited($status) && $status) {
                         $this->log("Helper child exited with non-zero exit code $status.");
                         exit(1);
                    }

                }
                break;
        }
    }
protected function fork_me($method) {
        $this->wait_for_signal = true;
        $pid = pcntl_fork();
        switch ($pid) {
            case 0:
                $this->isparent = false;
                $this->parent_pid = $this->pid;
                $this->pid = getmypid();
                $this->$method();
                break;
            case -1:
                $this->log("Failed to fork");
                $this->stop_work = true;
                break;
            default:
                $this->log("Helper forked with pid $pid", GearmanManager::LOG_LEVEL_PROC_INFO);
                $this->helper_pid = $pid;
                while ($this->wait_for_signal && !$this->stop_work) {
                    usleep(5000);
                    pcntl_waitpid($pid, $status, WNOHANG);

                    if (pcntl_wifexited($status) && $status) {
                         $this->log("Helper child exited with non-zero exit code $status.");
                         exit(1);
                    }

                }
                break;
        }
    }
protected function fork_me ( $ method ) { $ this -> wait_for_signal = true ; $ pid = pcntl_fork ( ) ; switch ( $ pid ) { case 0 : $ this -> isparent = false ; $ this -> parent_pid = $ this -> pid ; $ this -> pid = getmypid ( ) ; $ this -> $ method ( ) ; break ; case - 1 : $ this -> log ( "Failed to fork" ) ; $ this -> stop_work = true ; break ; default : $ this -> log ( "Helper forked with pid $pid" , GearmanManager :: LOG_LEVEL_PROC_INFO ) ; $ this -> helper_pid = $ pid ; while ( $ this -> wait_for_signal && ! $ this -> stop_work ) { usleep ( 5000 ) ; pcntl_waitpid ( $ pid , $ status , WNOHANG ) ; if ( pcntl_wifexited ( $ status ) && $ status ) { $ this -> log ( "Helper child exited with non-zero exit code $status." ) ; exit ( 1 ) ; } } break ; } }
Forks the process and runs the given method. The parent then waits
for the child process to signal back that it can continue

@param   string  $method  Class method to run after forking
Forks the process and runs the given method . The parent then waits for the child process to signal back that it can continue