Mpass – PHP做Socket服务的解决方案
一般很少有用PHP做服务的, 但是如果你的已有业务逻辑都是PHP实现的, 而现在却需要基于已有的业务逻辑提供一套Socket服务, 怎么办?
当然, 解决方法很多, 但最简单的办法, 还是直接使用PHP做Socket服务.
而这样做要解决的问题有很多, 主要要解决的问题有如下几个:
1. 作为后台服务,需要常驻后台运行, 那么丁点的内存泄露都是不能接受的.
2. 作为后台服务,畸形数据导致进程异常退出, 也是不可接受的.
3. 作为后台服务, 要能做到graceful restart.
4. 作为后台服务, 对资源的使用必须在可接受的范围以内.
最近,我就基于PHP的pcntl扩展实现一个简单的提供Socket服务的框架. 取其名为Mpass(Multi-Processes Socket Server).
主要结构如下:
Mpass
我之前的文章PHP CLI模式下的多进程应用介绍过在PHP做服务的时候如何避免内存泄露, 所以基于此, 再加上PHP5以后的stream_socket_*系列API, 就完成了这一套框架.
至于Graceful restart, 通过pcntl_signal函数, 在接受到restart/shutdown信号时刻, 做关闭清理动作, 保证不会因为重启/关闭而使得正在执行的逻辑出错.
有类似需求的朋友, 可以借鉴.
项目地址&下载地址 : Mpass
Mpass – PHP做Socket服务的解决方案相关推荐
- TCP传输:利用socket服务做一个文本转换器
转载请注明出处,谢谢:http://blog.csdn.net/harryweasley/article/details/45665291 最近看了一个教学视频,学习socket编程,里面有一个例子感 ...
- Java:socket服务端,socket服务端支持多连接,socket客户端,socket客户端支持发送和接受
一.Java之socket服务端 新建一个Java工程 命名 给他先创建一个类 在类里面我们做一个main 这里面也需要,创建套接字,IP号,端口号 但是java中有一个类 Serve ...
- C# Socket服务端与客户端通信(包含大文件的断点传输)
步骤: 一.服务端的建立 1.服务端的项目建立以及页面布局 2.各功能按键的事件代码 1)传输类型说明以及全局变量 2)Socket通信服务端具体步骤: (1)建立一个Socket (2)接收 ...
- 【★更新★】高性能 Windows Socket 服务端与客户端组件(HP-Socket v2.0.1 源代码及测试用例下载)...
HP-Socket 以前为某大型通信项目开发了一套通用 Windows Socket TCP 底层通信组件,组件代号为 HP-Socket.现在把 HP-Socket 的所有代码向大众公开,希望能对大 ...
- macos big sur安装php扩展_用PHP构建基于swoole扩展的socket服务(附PHP扩展安装步骤)...
最近公司的一项目中,需要用PHP搭建一个socket服务. 本来PHP是不适合做服务的,因为和第三方合作,需要采用高效而稳定的TCP协议进行数据通信.经过多次尝试,最终选择了开源的PHP扩展:swoo ...
- DockerCon 2016 深度解读: Citrix 服务发现解决方案 —— Nitrox
说起Citrix公司的NetScaler这款硬件负载均衡器大家可能不熟悉,它的竞争对手F5,在运维界可能比较多人了解.硬件负载均衡器通常作为网络入口流量分流的设备,例如像淘宝网的流量特别大,可能只有几 ...
- Cluster模式潜在问题及解决方案、Web服务综合解决方案
会不断更新!冲冲冲!跳转连接 https://blog.csdn.net/qq_35349982/category_10317485.html Cluster模式潜在问题及解决方案.Web服务综合解决 ...
- 使用SuperSocket打造逾10万长连接的Socket服务
使用SuperSocket打造逾10万长连接的Socket服务 原文:使用SuperSocket打造逾10万长连接的Socket服务 SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Ne ...
- 《零基础看得懂的C语言入门教程 》——(十三)socket服务端编写
一.学习目标 了解C语言的socket的概念 了解C语言socket的使用方法 完成C语言socket服务端 目录 C语言真的很难吗?那是你没看这张图,化整为零轻松学习C语言. 第一篇:(一)脱离学习 ...
- AI+服务 阿里巴巴如何做智能服务转型?
AI下围棋.AI写作文.AI看病--在智能时代,通过新技术的赋能,行业已经发展到了一个新的高度.那么在服务领域,尤其是企业服务中,智能技术的加入会带来哪些新的想象? 在阿里巴巴,智能服务已经成为企业发 ...
最新文章
- C语言荣获2019年度最佳编程语言
- sql server 海量数据速度提升:SQL优化-索引(9) 【转】
- 使用JdbcTemplate报 Incorrect column count: expected 1, actual 5错误解决
- SQL Server 服务器硬件配置
- 让你见识一下什么叫最完整、最系统的前端学习路线
- java集合中retainAll方法
- redis 能不能监听特定的key失效_Spring boot实现监听Redis key失效事件实现和其它方式...
- 《GO并发编程实战》—— 临时对象池
- python3高性能网络编程_Python高级网络编程系列之基础篇
- 开源转场库HYBControllerTransitions
- 快速突破面试算法之树结构篇
- 博世BMI160驱动程序 C语言编程,如何使用PSoC 6制作完整的测试系统来与BMI160进行通话...
- C++char数据类型
- Cloudflare Radar 2021 年回顾
- untiy 移除一个组件
- AI 换脸术「Deepfakes」进化简史
- 2018-2019年世界将会出现一场经济危机,危机过后中国将会崛起!
- java微信公众号自动回复文字加图片
- 【SAP】德国SAP校园招聘面试经验
- Python实现的通讯录
热门文章
- Qt 防止程序二次运行 实现应用单例
- import/export win7中电源计划
- 服务器压缩文件夹,怎样在文件服务器的NTFS分区(卷)中,压缩文件夹D:\lists?...
- oracle 导入时出现两个,Oracle的导入及两个错误
- python中title函数有什么用_基于Python中capitalize()与title()的区别详解
- vscode启动项目报jdk11没有_JDK 11 安装过程(同时已安装了JDK 8)以及Intellij IDEA 配置...
- vi/vim编辑器使用方法详解
- OpenCasCade中一个V3d_Viewer对应多个示例窗口V3d_View
- C++随机数生成器(default_random_engine)
- c++MFC 截取字符串