[PHP] 简单多进程并发

[PHP] 简单多进程并发

					<div> 
														 陶士涵															
														 2024-10-15 04:13:11 

				</div>
									<pre>&lt;?php<br/>

//守护进程
umask(0); //把文件掩码清0 if (pcntl_fork() != 0){ //是父进程,父进程退出

    exit();<br/>

}
posix_setsid();//设置新会话组长,脱离终端 if (pcntl_fork() != 0){ //是第一子进程,结束第一子进程

    exit();<br/>

}
chdir(“/”); //改变工作目录 //开启五个子进程
\(worker=0;<br/> do { for(\)i=0;\(i&lt;6;\)i++){

            $pid = pcntl_fork();<br/>
            if ($pid == -1) {<br/>
                    return false;<br/>
            } elseif ($pid == 0) { //子进程,在此处处理业务逻辑

//TODO sleep(60);

                    exit;<br/>
            } else { // parent<br/>
                    $worker++;<br/>
                    if($worker&gt;5){<br/>
                            $id = pcntl_wait($status);<br/>
                            if ($id &gt; 0) {<br/>
                                    $worker--;<br/>
                            }<br/>
                    }<br/>
            }<br/>
    }<br/>
    usleep(200000);

} while (true); while ($worker &gt; 0) {

    $id = pcntl_wait($status);<br/>
    if ($id &gt; 0) {<br/>
            $worker--;<br/>
    }<br/>

}

														<div>