Search code examples
phpexecpcntl

what is the difference between pcntl_exec and exec in php?


I've read the docs at https://www.php.net/manual/en/function.pcntl-exec.php and http://php.net/manual/en/function.exec.php but I can't really tell what the actual difference is.


Solution

  • The pcntl_exec() function works exactly like the standard (unix-style) exec() function. It differs from the regular PHP exec() function in that the process calling the pcntl_exec() is replaced with the process that gets called. This is the ideal method for creating children

    . In a simple example (that does no error checking):

    switch (pcntl_fork()) {
      case 0:
        $cmd = "/path/to/command";
        $args = array("arg1", "arg2");
        pcntl_exec($cmd, $args);
        // the child will only reach this point on exec failure,
        // because execution shifts to the pcntl_exec()ed command
        exit(0);
      default:
        break;
    }
    
    // parent continues
    echo "I am the parent";
    

    Referred from comments here: https://www.php.net/manual/en/function.pcntl-exec.php