ZYS 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
ZYS 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票

软件简介

 

核心特性

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.4"
     }
}

分布式服务器通讯服务

建立多个服务器之间进行数据通信服务,服务自动连接在线服务器,支持热拔,启动服务后自动连接,无需人为干预
注意事项:
    需要在conf/application.conf里配置端口和监听、日志等
    需要有一个redis服务器,并且分布式服务器都能连接redis
    web端可以直接调用服务
    使用如下
    //注意:type为sql、file,要是需要别的功能,自己定义
        if($_FILES){
        //数据同步
        $sql = array('type'=>'sql','data'=>'show tables');
        var_dump(distributed::getInstance()->query($sql));
        //文件同步(不用安装rsync+notify就可以实现文件同步,并且是触发式的占用很小的资源,调用sendfile零复制)
            $dir_pre=MYPATH.'/public/uploads/';
            if(!is_dir($dir_pre.date('Ymd'))){
                mkdir($dir_pre.date('Ymd'),0777,true);
         }
            if(is_uploaded_file($_FILES['file']['tmp_name'])){ 
            $upname=explode('.',$_FILES['file']['name']);
            $filename=uniqid().substr(time(),-4).'.'.$upname[1];
            if(move_uploaded_file($_FILES['file']['tmp_name'],$dir_pre.date('Ymd').'/'.$filename)){  
                echo "Stored in: " . $dir_pre.date('Ymd').'/'.$filename; 
                $fileinfo = array('type'=>'file','data'=>array('path' =>'/public/uploads/'.date('Ymd').'/'.$filename,'size'=>$_FILES['file']['size'],'ext'=>$upname[1]));
                var_dump(distributed::getInstance()->queryfile($fileinfo));
                }else{  
                    echo 'Stored failed:file save error';  
                }  
            }else{
            echo 'Stored failed:no post ';  
        }
    }
        本地访问: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;
    本地访问:http:/localhost/index/dbtest/

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

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

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

vmstat服务器监控

本地访问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.html

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (1)

加载中
作者,有使用文档吗?
2019/10/14 10:43
回复
举报
更多评论
暂无内容
发表于AI & 大数据专区
2016/08/14 13:29

php实现分布式服务器通讯

建立多个服务器之间进行数据通信服务,服务自动连接在线服务器,支持热拔,启动服务后自动连接,无需人为干预 注意事项: 需要在conf/application.conf里配置端口和监听、日志等 需要有一个redis服务器,并且分布式服务器都能连接redis web端可以直接调用服务 使用如下 //注意:type为sql、file,要...

0
1
10/25 23:57

解决PageHelper.startPage(page, size)后,关于PageInfo的total等属性不正确等问题

解决PageHelper.startPage(page, size)后,关于PageInfo的total等属性不正确等问题 参考文章: (1)解决PageHelper.startPage(page, size)后,关于PageInfo的total等属性不正确等问题 (2)https://www.cnblogs......

0
0
发表于大前端专区
2018/09/14 15:29

谷歌火狐打开IE可行性测试

谷歌火狐打开IE可行性测试 第一步: 安装控件: 链接: https://pan.baidu.com/s/19l5pxzLF6XEn1Yl9QXexEA 密码: rg7r 第二步:页面代码块: <script language="JavaScript"> function open_exe(shellp,str) { a=new ......

0
0
发表了博客
2018/10/11 17:14

easyui的filebox过滤文件

示例:<input class="easyui-filebox" data-options="buttonText:'选择文件',accept:'image/gif' "/> 这样设置过后,选择文件的时候只有后缀为*.gif 的文件才会显示。 类型 accept填写的值 描述 *.3gpp audio/3gpp, video/3gpp 3GPP Audio/Video *.ac3 audio/ac3 AC3 Audio *.asf allpication/vnd.ms-asf Advanced Strea...

0
0
发表了博客
2019/04/09 18:00

实验3

实验结论: Part1: 验证性内容 从键盘上输入3个数,让它们代表3条线段的长度,编写一个c程序判断这3条线段组成的三角形属于什么类 型(一般三角形、等腰三角形、等边三角形或不构成三角形) 1 /* 2 《C语言程序设计教程学习指导》p122 实验内容(1) 3 这是一个使用多分支if语句编程解决非数值类问题示例 4 运行程序...

0
0
发表了博客
2019/03/27 12:05

DBCP连接池配置参数

本文参考自:https://blog.csdn.net/zys_1997/article/details/78107783 首先,明确连接、活动连接(连接正被使用)、空闲连接的概念 创建连接 1、初始化 2、空闲连接低于最小空闲minIdle 销毁连接 1、空闲连接数目高于最大空闲 2、活动连接被遗弃 回收行为 1、空闲连接回收器(定时执行)2、连接回收器(maxwait后触发)...

0
0
发表了博客
2016/07/23 11:37

轻松学习之二——iOS利用Runtime自定义控制器POP手势动画

轻松学习之二——iOS利用Runtime自定义控制器POP手势动画

0
0
发表了博客
2019/06/03 22:06

沉默

#### koa的源码是面试必须问的,因为太简单了。 #### 9月16日的计划。 复习webpack课程和promise和node。 和第六期的课程。 牛客网的题。 掘金。优秀博客。 搞清楚如何发一个npm的包和@aaa域名下的包。不同的源下的包发哪里去了哈。 jenkins的 devOps。 大师分享的ppt.git reset 之后发生了什么。 ================= 题1...

0
0
发表了博客
07/13 09:09

【退役贴】真·蒟蒻的acm感悟&回忆

窝是一只打过铁费了很大力气仍然只能大四拿铜的辣鸡的辣鸡的辣鸡…… 窝是一只打过铁费了很大力气仍然只能大四拿铜的辣鸡的辣鸡的辣鸡…… 窝是一只打过铁费了很大力气仍然只能大四拿铜的辣鸡的辣鸡的辣鸡…… 最初的最初 最后的最后 一共两年零一个月的acm生涯 因为acm,我第一次坐高铁,住宾馆,坐飞机/误机…… 因为a...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了问答
2017/04/14 09:24

直播小程序解决方案

@qieangel 你好,想跟你请教个问题: 我想做一个单纯视频直播功能的工具,主要应用于公开课,大型活动现场,在线教育等领域,主要的软硬件问题是: 1.软件方面想做成轻量级,便捷实用不占用空间; 2.硬件方面要解决多部手机同步切换画面及声音的问题,例如直播一个活动可能需要全场画面也需要细节画面,在管理平台上可以...

1
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
1 评论
25 收藏
分享
返回顶部
顶部