首页 » PHP教程 » php多过程缺陷技巧_42php多进程运行留心事项

php多过程缺陷技巧_42php多进程运行留心事项

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

1.1、源码

在之前的代码根本上,修正得到如下代码

php多过程缺陷技巧_42php多进程运行留心事项

<?php

php多过程缺陷技巧_42php多进程运行留心事项
(图片来自网络侵删)

$name = 'xiaobei';

$pid = pcntl_fork();

if ($pid<0) {

die(\"大众fork is error.\"大众);

}

if ($pid===0) {

echo \"大众I am a child.-->\"大众,posix_getppid(),'-->',posix_getpid(),'->',$name,PHP_EOL;

exit;

while (1) {

echo time(),PHP_EOL;

sleep(2);

}

}

echo \"大众I am a father-->\公众,posix_getpid(),'-->',$name,PHP_EOL;

1.2、实行结果

截图的关系,程序还是每隔1s,输出当前韶光。
产生此结果的缘故原由是什么?

1.3、缘故原由解释

由于父进程先于子进程退出。
因此子进程就成了孤儿进程。
它被linux系统的1号进程收养,从而摆脱当前的运行终端。

那是否可以避免此种情形,或者说,当我们创建子进程后,一定要确保子进程完全退出后,父进程才退出

2、修正案例的源码

2.1、源码

<?php

/

Copyright (C) Iamasb

@project : 3、workerman干系知识点

@explain : fork子进程

@filename : fork.php

@author : iamasb

/

$name = 'xiaobei';

$pid = pcntl_fork();

if ($pid<0) {

die(\公众fork is error.\公众);

}

if ($pid===0) {

echo \"大众I am a child.-->\"大众,posix_getppid(),'-->',posix_getpid(),'->',$name,PHP_EOL;

while (1) {

echo time(),PHP_EOL;

sleep(2);

}

}

echo \"大众I am a father-->\公众,posix_getpid(),'-->',$name,PHP_EOL;

// 非壅塞的运行办法

//while (1) {

// $pid = pcntl_wait($status,WNOHANG); // 非壅塞

// if ($pid>0) {

// echo 'exit->',$pid,'-->',$status,PHP_EOL;

// exit;

// }

//}

$pid = pcntl_wait($status,WUNTRACED); // 壅塞,直到子进程退出时,才返回

echo 'exit->',$pid,'-->',$status,PHP_EOL;

2.2、实行结果

备注: 由于当前输出信息,霸占了终端。
因此只能另开shell终端,并利用kill命令,杀去世子进程

标签:

相关文章

乌合大数据,新时代数据融合的先锋力量

随着互联网技术的飞速发展,大数据已经成为推动社会进步的重要力量。乌合大数据作为新时代数据融合的先锋力量,以其独特的优势,为各行各业...

PHP教程 2024-12-17 阅读0 评论0

乘机大数据,解码空中出行的新趋势

随着科技的飞速发展,大数据已经渗透到了各行各业。在航空领域,乘机大数据的运用为航空公司、机场、旅客等各方带来了诸多便利。本文将从乘...

PHP教程 2024-12-17 阅读0 评论0

乐护大数据,介绍医疗健康领域的未来趋势

随着互联网技术的飞速发展,大数据已经成为各行各业的重要驱动力。在医疗健康领域,大数据同样发挥着举足轻重的作用。乐护大数据作为我国医...

PHP教程 2024-12-17 阅读0 评论0