PyPy Python 解释器
PyPy 是用 Python 实现的 Python 解释器。PyPy 是 Python开发者为了更好的Hack Python创建的项目。此外,……...
核心特性
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 //配置是同步执行还是异步执行,默认不配置代表异步执行,同步执行设置为falseDbServer.multiprocess=false //配置是否启用多进程,默认不配置代表单进程阻塞模式,多进程模式要设置为trueDbServer.pool_num=20 //配置连接池mysql的数量DbServer.port=9501DbServer.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.sophpize来安装然后在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 seehttp://www.apache.org/licenses/LICENSE-2.0.html
PyPy 是用 Python 实现的 Python 解释器。PyPy 是 Python开发者为了更好的Hack Python创建的项目。此外,……...
Material Files是一款开源的Android文件管理器,符合Material Design规范,支持root权限、NAS、压缩文件……...
Vangogh 是 iOS 颜色连贯绑定模拟器。 在线示例请看:http://gfycat.com/HelpfulAchingCoati ...
Fumble 是简单的节点里的错误对象。专门为 fetchr 库创建,基于 hapi.js。 示例代码: varfumble=require……...
Buster 是一个 Firefox 扩展,它通过使用语音识别完成 reCAPTCHA 音频挑战,帮助用户解决困难的验证码。……...
OOS 是一个 C++ 的 ORM 框架。旨在封装所有数据库后端功能,并对开发者提供统一的访问 API。使用 OOS 我……...
VisIt 是一种交互式并行可视化访问和图形的分析工具,用来查看科学数据。用户可以从他们能快速生成可视化数据,随着时间而动态显示,操纵他们,保存用来展现的结果图像。Visit含有丰富套可视化功能,以便你可以各种不同……
乐吾乐 Le5le Meta2d.js是一个实时数据响应和交互的2d引擎,可用于Web组态,物联网,数字孪生等场景。。 在线使用 在线使用 为什么使用 新引擎 数据+ 算法 + 风格 = 栩栩如生; 数据为核心、数据驱动显示; 多状……
Pony 是一个面向对象的基于 Actor 模型的安全而且高性能的编程语言。Pony 提供 Sublime 和 Atom 编辑插件,同时很快将提供 vim 和 Visual Studio 支持。可使用 LLDB 和 GDB 进行调试。 Pony 兼容 C 程序,其编译器……