登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
资源区
›
代码
›
聊聊 PHP 多进程模式下的孤儿进程和僵尸进程 ...
聊聊 PHP 多进程模式下的孤儿进程和僵尸进程
[ 复制链接 ]
决台
2025-6-4 14:18:57
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
大家好,我是码农先森。
在 PHP 的编程实践中多进程通常都是在 cli 脚本的模式下使用,我依稀还记得在多年以前为了实现从数据库导出千万级别的数据,第一次在 PHP 脚本中采用了多进程编程。在此之前我从未接触过多进程,只知道 PHP-FPM 进程管理器是多进程模型,但从未在编程中进行实践。多进程虽然能带来效率上的提升,但依然会带来不少的问题,如果初学者使用多进程,那注定会遇到各种奇奇怪怪的 Bug 比如并发操作数据库引起死锁、共用内存变量资源造成串数据、忘记回收进程资源导致产生孤儿进程、僵尸进程等。反正如果我们长期都是 PHP-FPM 模式下编程的话,在使用多进程编程时需要慎之又慎,避免出现意想不到的问题。不过这次我想分享的内容是多进程模式下的孤儿进程和僵尸进程,通过示例代码来看看这两者进程是如何产生的,又应该如何解决,内容不难但是在实际的编程中是可能比较容易忽视的点。
按照惯例我们先看看孤儿进程和僵尸进程的基础概念。
孤儿进程:是指一个进程的父进程已经终止,但该子进程仍然在运行。当父进程结束时,操作系统会将其所有的子进程重新分配给 init 进程。init 进程会负责这些孤儿进程,并确保它们能够正确结束。孤儿进程不会造成资源泄漏,因为最终它们会被 init 进程管理并正确清理。
僵尸进程:是指一个已经完成执行的进程,但仍在进程表中保留了一些信息。这通常发生在父进程未调用 wait() 或相关函数来获取子进程的退出状态时。僵尸进程处于 Z 状态,是一种占用系统资源但不占用 CPU 的进程。僵尸进程会继续占用系统的进程 ID,如果大量产生将导致进程 ID 耗尽,可能会影响系统的正常运行。
这两者进程的基础概念应该还比较好理解,孤儿进程的产生就是缘于父进程的不负责,自己先跑路了,导致自己的子进程变成了孤儿,最后孤儿进程被系统给回收了,可以理解为被政府的福利院收养了。僵尸进程的产生就是儿子进程执行完了没有退出,但是父进程又不知情,无法及时回收儿子进程的资源,导致自己的儿子进程变成了僵尸进程,僵尸进程往往比孤儿进程对系统的危害更大,接下来我们来看看具体的代码示例。
首先看看
孤儿进程
示例,使用 pcntl_fork 函数创建了一个子进程,子进程会每间隔 1 秒钟获取一次自己进程的 ID 和父进程的 ID,而父进程在 2 秒钟之后就退出跑路了,自此子进程就变成了孤儿进程,被系统进程收养了。
[code]
进程
聊聊
PHP
模式
孤儿
相关帖子
多进程架构+多系统兼容,开发必备!
14.结构型 - 外观模式 (Facade Pattern)
Windows日志错误为:php-cgi.exe exit(busy timeout), return code 9
15.结构型 - 组合模式 (Composite Pattern)
观察者模式,发布/订阅模式,与回调函数
PHP 8.6 即将支持部分函数应用
咱们聊聊Spring循环依赖那点事儿:从“死锁”到“三级缓存”的奇妙之旅
16.结构型 - 享元模式 (Flyweight Pattern)
PHP 8.6 新增 clamp() 函数
AI 付费模式终极对比:ChatGPT、Gemini、Claude 定价策略拆解,谁最值得买单?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
多进程架构+多系统兼容,开发必备!
1
58
百里宵月
2025-12-11
安全
14.结构型 - 外观模式 (Facade Pattern)
0
246
官厌
2025-12-12
安全
Windows日志错误为:php-cgi.exe exit(busy timeout), return code 9
0
988
愿隙
2025-12-12
安全
15.结构型 - 组合模式 (Composite Pattern)
0
431
即息极
2025-12-12
安全
观察者模式,发布/订阅模式,与回调函数
0
43
粉押淫
2025-12-13
业界
PHP 8.6 即将支持部分函数应用
0
711
昝琳怡
2025-12-14
业界
咱们聊聊Spring循环依赖那点事儿:从“死锁”到“三级缓存”的奇妙之旅
0
695
赏听然
2025-12-14
安全
16.结构型 - 享元模式 (Flyweight Pattern)
0
695
莠畅缕
2025-12-15
业界
PHP 8.6 新增 clamp() 函数
0
103
轩辕琳芳
2025-12-15
安全
AI 付费模式终极对比:ChatGPT、Gemini、Claude 定价策略拆解,谁最值得买单?
0
643
匝抽
2025-12-16
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
决台
2025-6-4 14:18:57
关注
0
粉丝关注
24
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994893
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9998
6
宋子
9983
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
641
AI 付费模式终极对比:ChatGPT、Gemini、Cl
832
JSAPIThree 加载 3D Tiles 学习笔记:大规
356
LLM 工具调用的范式演进与认知模型集成
354
Requirements Engineering with AI for Con
342
【节点】[Adjustment-WhiteBalance节点]原
302
上海专业建筑维修服务解析:标准化流程如何
944
【分析式AI】-带你弄懂XGBoost模型
730
【分析式AI】-带你弄懂XGBoost模型
51
【分析式AI】-带你弄懂XGBoost模型
272
C语言之统计天数
238
如何使用DashVector的多向量检索
270
【分析式AI】-朴素贝叶斯算法模型
216
【分析式AI】-朴素贝叶斯算法模型
934
【睿擎派】EtherCAT总线之IO模块读写
587
python3.13 3.14 新特性 好好好
783
Python新利器:用uv轻松管理venv虚拟环境和
956
Open-AutoGLM项目衍生自研app测试思路
180
.Net-Avalonia学习笔记(目录)
435
PoloAPI 绘画接口全攻略:从参数详解到实战
145
剑指offer-50、数组中重复的数字