phptars/tars-server

该包的最新版本(0.7.0)没有可用的许可信息。

tars的PHP框架

0.7.0 2021-03-17 13:49 UTC

README

包名:phptars / tar server

Tars是PHP服务器的底层依赖。

如何使用

Tars-server使用composer进行包管理。开发者只需根据相应版本安装composer。

具体使用方法,请参考相应PHP / examples下的HTTP服务器、定时服务器和TCP服务器。

框架描述

Tars-server基于swoole网络传输器的底层。框架主要包括以下目录

  • CMD:负责框架的启动和停止命令的实现,目前支持启动、停止和重启命令

  • 核心:框架的核心实现

  • 协议:负责协议处理

CMD层

对于CMD层,目前包含以下文件

  1. Command.php

负责在服务启动时指定配置文件和启动命令

  1. CommandBase

它指定了命令所需的实现。所有如启动等都是commandbase的子类。提供getprocess方法以获取当前启动的服务进程。

  1. 重启

重启命令,仅在调用停止后调用启动

  1. 启动

启动命令时,首先解析平台发出的配置,然后导入必要的业务services.php文件。

然后,监控进程是否已启动以避免重复启动;

最后,将配置和预定义的swooletable传递给服务器以进行服务初始化和启动。

  1. 停止

当前服务停止方式是暴力。它将根据服务名称拉出所有进程,然后杀死它们。将来将引入重新加载以重新加载服务代码。

核心层

核心层主要由事件、服务器、请求和响应组成。

  1. 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。

  • 处理协议并返回包。

  • 清除全局变量。

  1. Event.php

OnReceive方法

  • TCP协议的请求将首先进入tarsprotocol的路由方法进行路由。

  • 路由后,进行实际的函数调用。

  • 打包回。

  • 发送回包。

Onrequest方法

  • 提供一个默认的探测接口。

  • 执行基本的路由协议分析。

  • 调用相应的控制器方法。

  • 发送回包。

  1. Request.php

存储一些必要的请求数据;

设置和删除全局变量

  1. 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对象的访问