phptars / tars-server
tars的PHP框架
Requires
- php: >=5.6
- phptars/tars-client: ~0.2
- phptars/tars-config: ~0.1
- phptars/tars-log: ~0.1.6
- phptars/tars-monitor: ~0.2
- phptars/tars-report: ~0.1
- phptars/tars-utils: ~0.3
- dev-master
- 0.7.0
- 0.6.0
- 0.6.0-alpha
- 0.5.0
- 0.5.0-alpha
- 0.4.0
- 0.4.0-alpha2
- 0.4.0-alpha
- 0.3.1
- 0.3.0
- 0.2.5
- 0.2.4
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.1-alpha.3
- 0.2.1-alpha.2
- 0.2.1-alpha.1
- 0.1.10
- 0.1.9
- 0.1.8
- 0.1.7
- dev-feature/support-ssl
- dev-distributedTracing
- dev-ted/enablezipkin
- dev-feature/standalone
- dev-feature/route
- dev-feature/support_protobuf
- dev-feature/support_multi_servant
- dev-develop
This package is auto-updated.
Last update: 2024-09-17 21:13:41 UTC
README
包名:phptars / tar server
Tars是PHP服务器的底层依赖。
如何使用
Tars-server使用composer进行包管理。开发者只需根据相应版本安装composer。
具体使用方法,请参考相应PHP / examples下的HTTP服务器、定时服务器和TCP服务器。
框架描述
Tars-server基于swoole网络传输器的底层。框架主要包括以下目录
-
CMD:负责框架的启动和停止命令的实现,目前支持启动、停止和重启命令
-
核心:框架的核心实现
-
协议:负责协议处理
CMD层
对于CMD层,目前包含以下文件
- Command.php
负责在服务启动时指定配置文件和启动命令
- CommandBase
它指定了命令所需的实现。所有如启动等都是commandbase的子类。提供getprocess方法以获取当前启动的服务进程。
- 重启
重启命令,仅在调用停止后调用启动
- 启动
启动命令时,首先解析平台发出的配置,然后导入必要的业务services.php文件。
然后,监控进程是否已启动以避免重复启动;
最后,将配置和预定义的swooletable传递给服务器以进行服务初始化和启动。
- 停止
当前服务停止方式是暴力。它将根据服务名称拉出所有进程,然后杀死它们。将来将引入重新加载以重新加载服务代码。
核心层
核心层主要由事件、服务器、请求和响应组成。
- Server.php
负责启动前的服务初始化,包括
-
确定是TCP还是HTTP类型,注册相应的回调并启动相应的服务器
-
判断是否为定时器,将启动相应的定时器扫描对应目录
-
通过swoole配置
-
注册通用回调函数
-
传递服务器的swooletable
-
指定整个框架的启动文件并强制require
-
指定框架的协议处理模式,tar或http
启动服务后,首先进入onmaster start
-
写入进程的名称
-
将PID写入文件
-
开始服务升级
onManagerStart
- 重命名进程
接下来是onworkerstart
-
如果是TCP类型,需要首先将接口中的注释转换为PHP数据,便于在路由时处理
-
如果是HTTP类型,需要指定相应的namespacename
-
设置相应工作进程的名称
-
如果是定时器,需要启动相应的定时器
-
当workerid = 0(保证只触发一次)时,将服务的报告任务提交到task
Ontask:提交服务的appName、servername、servantname。
分别注意onReceive和onrequest回调。
对于TCP服务器,注意onReceive。
-
初始化请求对象,将SW对象传递给全局变量$_server。
-
设置协议为tarsprotocol。
-
处理协议并返回包。
-
清除全局变量。
对于HTTP服务器,关注onrequest。
-
处理cookie、get、post请求参数。
-
初始化请求对象,将SW对象传递给全局变量$_server。
-
处理协议并返回包。
-
清除全局变量。
- Event.php
OnReceive方法
-
TCP协议的请求将首先进入tarsprotocol的路由方法进行路由。
-
路由后,进行实际的函数调用。
-
打包回。
-
发送回包。
Onrequest方法
-
提供一个默认的探测接口。
-
执行基本的路由协议分析。
-
调用相应的控制器方法。
-
发送回包。
- Request.php
存储一些必要的请求数据;
设置和删除全局变量
- Response.php
负责返回包的一些工作
服务启动过程
整个服务的开始是由CMD下的start触发的;
之后,我们调用Server对象的创建。
然后,依次初始化swoole;
服务启动后,只需要处理onReceive或onrequest监听
框架依赖
该框架依赖于以下包
-
Phptars / tar客户端:调用tar服务
-
Phptars / tar报告:负责报告服务自身的运行状态
-
Phptars / tar配置:负责拉取平台上传的配置
变更日志
v0.7.0(2021-03-17)
- 删除对LumenRoute & Monolog的要求
- 使用新的版本tarslog
v0.6.0(2020-07-07)
- 支持json版本
- 支持tars网关
v0.5.0(2020-09-08)
v0.4.0(2019-07-16)
-支持protobuf
v0.3.1(2019-06-21)
-支持多个服务员
-使用swoole的addListener作为底层支持
-支持一个服务部署多个对象,分别使用tars或HTTP协议
-调整services.php的格式,返回以objname为键的二维数组。
-Protocolname、servertype、istimer不再从私有模板中读取,需要在services.php中指定
-修复多服务员支持websocket的问题
v0.2.4(2019-03-20)
-根据PSR规则格式化代码
-修复代码中的bug
-支持自定义主缓存
-开放对swoole对象的访问