使用pcntl_fork,怎样控制产生的子进程
<?php
//declare(ticks=1);
$bWaitFlag = FALSE; // 是否等待进程结束
//$bWaitFlag = TRUE; // 是否等待进程结束
$intNum = 3; // 进程总数
$pids = array(); // 进程PID数组
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息
}
while(1){
for($i = 0; $i < count($pids); $i++){
if(!$pids[$i]) {
// 子进程进程代码段_Start
$str="";
sleep(5+$i);
for ($j=0;$j <$i;$j++) {$str.="*";}
echo "$i - > " . time() . " $str \n";
// 子进程进程代码段_End
}
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i - > " . time() . "\n";
}
}
? >
我只让它生成三个进程,结果看到了有八个进程在跑。。。。
定义的$intNum根本不起作用,请问该用什么控制啊
//declare(ticks=1);
$bWaitFlag = FALSE; // 是否等待进程结束
//$bWaitFlag = TRUE; // 是否等待进程结束
$intNum = 3; // 进程总数
$pids = array(); // 进程PID数组
for($i = 0; $i < $intNum; $i++) {
$pids[$i] = pcntl_fork();// 产生子进程,而且从当前行之下开试运行代码,而且不继承父进程的数据信息
}
while(1){
for($i = 0; $i < count($pids); $i++){
if(!$pids[$i]) {
// 子进程进程代码段_Start
$str="";
sleep(5+$i);
for ($j=0;$j <$i;$j++) {$str.="*";}
echo "$i - > " . time() . " $str \n";
// 子进程进程代码段_End
}
}
}
if ($bWaitFlag)
{
for($i = 0; $i < $intNum; $i++) {
pcntl_waitpid($pids[$i], $status, WUNTRACED);
echo "wait $i - > " . time() . "\n";
}
}
? >
我只让它生成三个进程,结果看到了有八个进程在跑。。。。
定义的$intNum根本不起作用,请问该用什么控制啊
...全文
相关推荐
子进程管理_PHP_下载.zip
在子进程中,可以使用`exit()`或`pcntl_exit()`来正常结束进程,避免产生僵尸进程。5. **并发处理**:通过多子进程实现并发,可以大大提高程序的执行效率。
PHP多进程简单实例小结
下面是一个简单的`pcntl_fork()`使用示例:```php$pid = pcntl_fork();var_dump($pid);```这段代码将在父进程和子进程中分别打印出不同的结果:父进程会输出子进程的
以实例全面讲解PHP中多进程编程的相关函数的使用
`exec()`函数常与PCNTL一起使用,用于在子进程中执行外部程序。总结起来,PHP的多进程编程主要是通过PCNTL库实现的,它提供了一系列的函数来创建、管理子进程,处理信号以及控制进程间的通信。
php多进程中的阻塞与非阻塞操作实例分析
首先,我们创建子进程通常使用`pcntl_fork()`函数。这个函数会复制当前进程,创建一个新的子进程。
PHP实现多进程并行操作的详解(可做守护进程)
该函数接受三个参数:一个函数名、参数数组和子进程数量。在函数内部,使用了一个无限循环,通过pcntl_fork()不断产生子进程。


基础编程
