本发明涉及web技术领域,具体为一种基于IO多路复用的纯PHP web框架。
背景技术:
同领域的现有的PHP WEB框架大概可以分为三类:
第一类是以Laravel、Symfony、Zend等为代表的MVC框架,这类框架经过长时间的发展和社区的贡献,越来越成熟,在成熟的同时,由于各种需求,框架也变得越来越重,最后导致的问题就是执行效率低下。
第二类是以Yaf为代表的,基于php扩展实现的框架。这类框架的优点是足够简单,执行效率高。但是这类框架在需要对框架层面做扩展或者调试的时候,需要精通php扩展的开发、C语言等,相对来说维护成本更高。
第三类是基于PHP扩展swoole开发出来的web框架,这类框架由于是常住内存,使用了IO多路复用,因此拥有更高的性能。但是这类框架存在和第二类框架一样的问题,需要精通PHP扩展和C语言,并且由于是异步流程,成本更高。
技术实现要素:
本发明的目的在于提供一种基于IO多路复用的纯PHP web框架,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种基于IO多路复用的纯PHP web框架,包括以下步骤:
A、主进程读取配置文件,监听端口;
B、主进程根据配置创建相应子进程数量;
C、在子进程中,使用php的扩展异步监听socket,监听的事件为可读事件,并注册回调函数;
D、在回调函数中,如果socket可读,则会调用accept函数,accept函数返回一个connection;
E、监听connction,监听的时间包括可读和可写事件,并注册可读和可写的回调函数;
F、在子进程创建完成后,主进程会监听子进程,当子进程异常退出时或者收到重启信号时,会重新创建子进程;
G、当程序收到退出信号时,主进程将退出信号发送给子进程,等待子进程全部退出后,主进程退出。
优选的,处理流程如下:
a、当有请求时,系统会唤醒子进程,调用注册可读回调;
b、在可读回调中,从connection中读取内容,根据http协议解析内容;
c、根据解析的内容,调用相应的controller,将Controller的返回值写入Connection,关闭客户端连接。
与现有技术相比,本发明的有益效果是:本发明采用php实现的一种多路io复用的web框架,相较于同领域的第一类框架,本发明拥有更高的性能;相较于第二类框架,拥有更高性能的同时,还能降低对研发人员的要求,降低维护成本;相较于第三类框架,虽然性能上存在较小的差异,但能拥有更低的维护成本,且本发明的性能已经能满足各种业务需求。
附图说明
图1为本发明流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明提供一种技术方案:一种基于IO多路复用的纯PHP web框架,包括以下步骤:
A、主进程读取配置文件,监听端口;
B、主进程根据配置创建相应子进程数量;
C、在子进程中,使用php的扩展异步监听socket,监听的事件为可读事件,并注册回调函数;
D、在回调函数中,如果socket可读,则会调用accept函数,accept函数返回一个connection;
E、监听connction,监听的时间包括可读和可写事件,并注册可读和可写的回调函数;
F、在子进程创建完成后,主进程会监听子进程,当子进程异常退出时或者收到重启信号时,会重新创建子进程;
G、当程序收到退出信号时,主进程将退出信号发送给子进程,等待子进程全部退出后,主进程退出。
本发明的处理流程如下:
a、当有请求时,系统会唤醒子进程,调用注册可读回调;
b、在可读回调中,从connection中读取内容,根据http协议解析内容;
c、根据解析的内容,调用相应的controller,将Controller的返回值写入Connection,关闭客户端连接。
本发明采用php实现的一种多路io复用的web框架,相较于同领域的第一类框架,本发明拥有更高的性能;相较于第二类框架,拥有更高性能的同时,还能降低对研发人员的要求,降低维护成本;相较于第三类框架,虽然性能上存在较小的差异,但能拥有更低的维护成本,且本发明的性能已经能满足各种业务需求。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。