Date created: Saturday, September 28, 2013 6:03:06 PM. Last modified: Friday, September 15, 2017 10:38:36 AM
Process Control - Child Fork
This script will fork a new process from the parent script, a child, under a new POSIX session. The two processes run side by side and even after the parent is killed, the child continues to run as expected.
<php
echo "PARENT posix_getpid=".posix_getpid().", posix_getppid=".posix_getppid()."\n\n";
$pid = pcntl_fork(); // Fork off a new child
if ($pid == -1) die("Could not fork new child\n");
if ($pid) { // PID == 0, this is where parent code is executed
echo "I have a child process, child PID = ".$pid."\n";
while(true) {
echo "PARENT - posix_getpid=".posix_getpid().", posix_getppid=".
posix_getppid()."\n";
sleep (10);
}
} else { // Some other number was returned, the PID of new child
$sid = posix_setsid(); // Place this child process in its own session
if ($sid < 0)
die("Child posix_setsid error\n");
echo "\nI am a child process, PID = ".$pid.
", posix_getpid=".posix_getpid().", posix_getppid=".
posix_getppid()."\n";
while(true) {
echo "CHILD - posix_getpid=".posix_getpid().", posix_getppid=".
posix_getppid()."\n";
sleep (10);
}
}
>
Previous page: Image Rotor
Next page: Process Control - Fork Chaser