Mpass – PHP做Socket服务的解决方案
来源:互联网 发布:php 替换双引号 编辑:程序博客网 时间:2024/06/08 14:24
作者: laruence 原文地址:http://www.laruence.com/2010/10/29/1774.html
一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办?
当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务.
而这样做要解决的问题有很多, 主要要解决的问题有如下几个:
- 作为后台服务,需要常驻后台运行, 那么丁点的内存泄露都是不能接受的.
- 作为后台服务,畸形数据导致进程异常退出, 也是不可接受的.
- 作为后台服务, 要能做到graceful restart.
- 作为后台服务, 对资源的使用必须在可接受的范围以内.
最近,我就基于PHP的pcntl扩展实现一个简单的提供Socket服务的框架. 取其名为Mpass(Multi-Processes Socket Server).
主要结构如下:
我之前的文章PHP CLI模式下的多进程应用介绍过在PHP做服务的时候如何避免内存泄露, 所以基于此, 再加上PHP5以后的stream_socket_*系列API, 就完成了这一套框架.
至于Graceful restart, 通过pcntl_signal函数, 在接受到restart/shutdown信号时刻, 做关闭清理动作, 保证不会因为重启/关闭而使得正在执行的逻辑出错.
有类似需求的朋友, 可以借鉴.
- Mpass – PHP做Socket服务的解决方案
- Mpass – PHP做Socket服务的解决方案
- 一套PHP做app接口的解决方案
- 一套PHP做app接口的解决方案
- 一套PHP做app接口的解决方案
- PHP Workerman框架。用来做php socket服务器的代码
- 使用PHP创建SOCKET服务
- 一个php socket服务类
- C++做HTTP服务应用 在Socket套接字中对HTTP头的处理
- php编写socket服务TCP/IP
- 这两天搞了个php做client端,C++做server端的socket(2011.11.18)
- Socket分包处理的解决方案
- PHP的Socket编程
- PHP的Socket编程
- php的socket通信
- Php的Socket初步
- PHP的Socket编程
- php的socket创建
- 用Py2exe打包Python脚本简单介绍
- 分布式数据库之间的操作
- 简单计算器
- Android Layout各种布局
- Apache用户验证
- Mpass – PHP做Socket服务的解决方案
- pyton高级编程--准备工作
- 计算器
- linux df命令参数详解
- 明天再去移动
- 解决:开启了debug但是Error: debugging information for 'myproject.exe' cannot be found or does not match. No symbols loaded.
- WebService CXF学习(入门篇1):CXF由来
- 数独问题
- 模拟HTTP请求, POST方法