这是两个php的多线程的方法,在Windows下不可用,在Linux下须要编译。 php
pcntl_fork()函数就是为当前的进程建立一个子进程。而且先运行父进程,返回的是子进程的PID,确定大于零。在父进程的代码中能够用 pcntl_fork(&$status)暂停父进程知道他的子进程有返回值。注意:父进程的阻塞同时会阻塞子进程。可是父进程的结束不影响子进 程的运行。 多线程
父进程运行完了会接着运行子进程,这时子进程会从执行pcntl_fork()的那条语句开始执行(包括此函数),可是此时它返回的是零(表明这是一个子 进程)。在子进程的代码块中最好有exit语句,即执行完子进程后当即就结束。不然它会又重头开始执行这个脚本的某些部分(一直没有总结出规矩)。 函数
总之,注意两点: spa
1。子进程最好有一个exit;语句,防止没必要要的出错; 线程
2. 进程
$pid = pcntl_fork(); it
//这里最好不要有其余的语句
if ($pid == -1) {
die('could not fork');
} else if ($pid) {
// we are the parent
pcntl_wait($status); //Protect against Zombie children
} else {
// we are the child
} 编译