基于PHP的pcntl扩展的Mpass介绍
浏览:1511次 出处信息
一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办?
当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务.
而这样做要解决的问题有很多, 主要要解决的问题有如下几个:
- 1. 作为后台服务,需要常驻后台运行, 那么丁点的内存泄露都是不能接受的.
- 2. 作为后台服务,畸形数据导致进程异常退出, 也是不可接受的.
- 3. 作为后台服务, 要能做到graceful restart.
- 4. 作为后台服务, 对资源的使用必须在可接受的范围以内.
最近,我就基于PHP的pcntl扩展实现一个简单的提供Socket服务的框架. 取其名为Mpass(Multi-Processes Socket Server).
主要结构如下:
我之前的文章PHP CLI模式下的多进程应用介绍过在PHP做服务的时候如何避免内存泄露, 所以基于此, 再加上PHP5以后的stream_socket_*系列API, 就完成了这一套框架.
至于Graceful restart, 通过pcntl_signal函数, 在接受到restart/shutdown信号时刻, 做关闭清理动作, 保证不会因为重启/关闭而使得正在执行的逻辑出错.
有类似需求的朋友, 可以借鉴.
项目地址 Google Code : Mpass
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:对比Imagick和Gmagick的像素迭代功能
后一篇:PHP的可变变量名 >>
文章信息
- 作者:雪候鸟 来源: 风雪之隅
- 标签: Mpass
- 发布时间:2010-10-31 20:35:14
近3天十大热文
- [56] IOS安全–浅谈关于IOS加固的几种方法
- [56] Oracle MTS模式下 进程地址与会话信
- [55] 如何拿下简短的域名
- [54] 图书馆的世界纪录
- [53] android 开发入门
- [53] Go Reflect 性能
- [50] 读书笔记-壹百度:百度十年千倍的29条法则
- [50] 【社会化设计】自我(self)部分――欢迎区
- [39] 程序员技术练级攻略
- [33] 视觉调整-设计师 vs. 逻辑