zys 高性能服务框架 -基于 yaf 和 swoole 的高性能服务框架

核心特性#

1. 基于 swoole 提供分布式服务器通讯服务

2. 基于 thrift 提供 rpc 远程调用服务

3. 基于 HTML5 提供在线网络直播平台服务

4. 基于 swoole 提供同步异步数据库连接池服务

5. 基于 swoole 提供异步任务服务器

6. 基于 vmstat 提供服务器硬件实时监控服务

7. 基于 yac、yaconf 提供共享数据、配置服务

8. 基于 zqf 提供高并发计数器、红包、二维码服务

9. 很好的支持网页版 console 的 shell 服务

服务启动#

需要 php 以 cli 模式运行 /server/server.php

php server.php start

php server.php stop

php server.php restart

composer 安装#

{
"require": {
"qieangel2013/zys": "0.1.3"
}
}

分布式服务器通讯服务#

建立多个服务器之间进行数据通信服务,服务自动连接在线服务器,支持热拔,启动服务后自动连接,无需人为干预

注意事项:

需要在 conf/application.conf 里配置端口和监听、日志等

需要有一个 redis 服务器,并且分布式服务器都能连接 redis

web 端可以直接调用服务

使用如下

// 注意:type 为 sql、file,要是需要别的功能,自己定义

$sql = array('type'=>'sql','data'=>'show tables');

var_dump(distributed::getInstance()->query($sql));

本地访问:http:/localhost/index/distributed/

架构图

jg.png

执行结果如下

dis1.pngdis2.png

thrift 的 rpc 远程调用#

本地访问 http://localhost/index/rpc (返回 0 表示成功)

数据库连接池使用方法#

服务文件在 /server/mysql/DbServer.php

简单地封装文件在 /application/library/mysql/dbclient.php

配置在 conf/application.ini 中

; 数据库连接池配置

DbServer.async=true // 配置是同步执行还是异步执行,默认不配置代表异步执行,同步执行设置为 false

DbServer.multiprocess=false // 配置是否启用多进程,默认不配置代表单进程阻塞模式,多进程模式要设置为 true

DbServer.pool_num=20 // 配置连接池 mysql 的数量

DbServer.port=9501

DbServer.logfile="/server/log/DbServer.log"

DbServer.localip="192.168.2.13"

使用方法:

$dbclient=new mysql_dbclient;

//print_r($data);

for ($i=0; $i <100 ; $i++) {

$dbclient->query("INSERT INTO user(name) VALUES('$i')");

//echo "INSERT INTO user(name) VALUES('$i')";

}

$data=$dbclient->query("select * from user");

$dbclient->close();

print_r($data);

exit;

数据库连接池多进程执行如下

multiprocess.png

swoole 实现简单的视频直播(可以实时传音频、视频、聊天)#

录制视频页面 http://localhost/index/swoolelivecamera

接受视频页面 http://localhost/index/swoolelive

testlive.png

vmstat 服务器监控#

本地访问 http://localhost/vmstat/

执行如下:

vmstats.png

yac、yaconf 提供共享数据、配置使用如下#

需要安装 php 扩展 yac、yaconf

// 注意:需要安装 yaconf 扩展,并且 yaconf.directory=/tmp/yaconf 必须在 php.ini 里设置,不能动态加载

echo Yaconf::get("conf.zqf");

// 注意:需要安装 yac 扩展,用于存储共享变量,下面的实例作为高并发计数器

$yac = new Yac();

$count=$yac->get('zqf');

if(!$count){

$yac->set('zqf', 1);

}else{

$yac->set('zqf', $count+0.5);

}

echo $count;

高并发计数器、红包、二维码使用如下#

需要安装 php 扩展 zqf

首先安装 php 扩展 zqf.so

phpize 来安装

然后在 php 文件调用

dl ('zqf.so'); 或者 phpini 里加载([https://github.com/qieangel2013/zqf

$obj=new zqf();

$counter= $obj->autoadd (0,1,0);(声明只针对多线程)

echo $counter;

红包第一个参数是红包总额,第二个人参数红包数量,第三个参数默认代表拼手气红包,设置为 1 的话为普通红包

拼手气红包

$hongb= $obj->hongbao (10,8); 或者 $hongb= $obj->hongbao (10,8,0); 返回数组为 Array ( [0] => 1.33 [1] => 1.02 [2] => 1.28 [3] => 0.44 [4] => 1.37 [5] => 0.81 [6] => 1.81 [7] => 1.94 ) 普通红包,每个人数额一样设置第三个参数

$hongb= $obj->hongbao (10,8,1); 返回数组为 Array ( [0] => 1.25 [1] => 1.25 [2] => 1.25 [3] => 1.25 [4] => 1.25 [5] => 1.25 [6] => 1.25 [7] => 1.25 )

var_dump($hongb);

$obj->savefile('https://www.baidu.com/s?wd = 昌平香堂 ','./test.png',500); 第一个参数是 url,第二参数是保存路径,第三个参数是二维码长或者宽

$obj->savefile('https://www.baidu.com/s?wd = 昌平香堂 ','./test.png',500,1); 第一个参数是 url,第二参数是保存路径,第三个参数是二维码长或者宽,第四个参数是决定是否透明,默认是不透明的

网页版 console 的 shell 使用如下#

本地访问 http://localhost/console

交流使用#

zys 框架交流群:337937322

License#

Apache License Version 2.0 see http://www.apache.org/licenses/LICENSE-2.0...

项目地址#

https://github.com/qieangel2013/zys

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。