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 restartcomposer 安装#
{
"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/
架构图
执行结果如下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;
数据库连接池多进程执行如下swoole 实现简单的视频直播(可以实时传音频、视频、聊天)#
录制视频页面 http://localhost/index/swoolelivecamera
接受视频页面 http://localhost/index/swoolelivevmstat 服务器监控#
本地访问 http://localhost/vmstat/
执行如下: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...
项目地址#
推荐文章: