未加星标

ysapi:由 Swoole + yaf 实现 socket 服务基础框架

字体大小 | |
[开发(php) 所属分类 开发(php) | 发布者 店小二03 | 时间 2017 | 作者 红领巾 ] 0人收藏点击收藏
ysapi 简介 ysapi是一个由 swoole + yaf 实现socket服务基础框架. 由swoole实现socket服务,对外提供API接口, yaf负责api对应的业务逻辑. 功能介绍 基于socket提供更快的数据返回 基于swoole多进程task模型,实现多任务并行处理 客户端单次调用,服务端自动拆分任务给多个task进程并发处理,并一次返回给客户端 每次调用生成唯一ID,此ID可把当次所有请求,任务串联起来,依此分析程序问题 DB, REDIS, MQ均长连接常驻,减少网络IO 基于yaf,提供可靠,快速,简单的业务开发 基于MQ异步收集请求日志(这个是可选的) 这是一个裸的,基础的,可以在这基础上修改成适合自己业务的服务. 主要解决的问题 基于swoole开发servers时,每次修改业务代码,或调试,都要重启整个服务或reload,才能看到调试信息或结果 这种开发体验是很难受的,很影响工作效率. 那能不能像传统开发一样,用浏览器来调试业务逻辑呢? 每次只用修改->保存->刷新浏览器就能看到调试信息和结果,和以往的工作方式一样. 答案是肯定的. 基于yaf的特点,很方便的实现. 当业务逻辑实现以后,只要发布或重启servers即可. 安装 必要的扩展 nginx mysql 5.7 php 7.1 extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/yaf.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/yaconf.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/swoole.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/msgpack.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/amqp.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/igbinary.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/redis.so extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/donkeyid.so php.ini扩展配置 [DonkeyId] ;0-4095 donkeyid.node_id=0 ;0-Timestamp donkeyid.epoch=0 [yaconf] yaconf.directory=/tmp/yaconf ; yaconf.check_delay=0 [yaf] yaf.environ = product ; develop test yaf.use_namespace = 1 ; yaf.action_prefer = 0 ; yaf.lowcase_path = 0 ; yaf.library = NULL ; yaf.cache_config = 0 ; yaf.name_suffix = 1 ; yaf.name_separator = "" ; yaf.forward_limit = 5 ; yaf.use_spl_autoload = 0 代码安装

把文件放到

/wwwroot/data_site/ysapi nginx.conf配置 server { listen 80; server_name api.local.com; index index.html index.htm index.php; root /wwwroot/data_site/ysapi/service; if (!-e $request_filename) { rewrite ^/(.*) /index.php/$1 last; } location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 重启Nginx,修改本机host文件 127.0.0.1 api.local.com 浏览器访问 保存后,重启浏览器打开(以下是yaf默认路由方式): http://api.local.com/index/index/index/data/def http://api.local.com/ index/ index/ index/ data/def 域名/ 模块/ 控制器/ 方法 / 参数/值 若无问题,将看到:
ysapi:由 Swoole + yaf 实现 socket 服务基础框架

之后就可以按yaf的方式开发API业务逻辑

启动 servers

业务代码开发完成后,我们可以reload或重启servers,来提供最新的接口

php /wwwroot/data_site/ysapi/run.php

服务启动无异常,可以使用api调用方法来尝试调用:

php /wwwroot/data_site/ysapi/call.php 客户端接口调用代码用例 用例中我们同时调用3个接口获得不同的数据 try { $api = new apicall(); $api->add('pagelist','index/index/index',['page'=>1]); $api->add('user','index/index/index2',['user'=>1]); $api->add('mess','index/index/index3',['mess'=>1]); $rs=$api->exec('www'); $code=$rs['code']; if($code!=200){ if($code==500){ // 全错 }elseif($code==300){ // 部份错 }else{ // 异常 } } $pagelist=$rs['pagelist']; $user=$rs['user']; $mess=$rs['mess']; echo(print_r($pagelist,1)); }catch (Exception $e){ echo $e->getMessage().PHP_EOL; die('ERROR-------------------------------'.PHP_EOL); } 业务开发 按照YAF的方式去开发接口业务逻辑 新建模块->建控制器->建方法->浏览器访问你的方法进行调试 方法传入的参数可到/_data/模块/控制器文件中定义,如: // /ysapi/_data/Index/Index.php // 路径及名字按YAF的方式定义 class IndexData{ public static $indexAction=[ 'def'=>[ 'page'=>1 ], 'p1'=>[ 'page'=>1 ], 'p2'=>[ 'page'=>2 ], ]; public static $index2Action=[ 'def'=>[ 'id'=>1 ], 'u1'=>[ 'id'=>1 ], 'u2'=>[ 'id'=>2 ], ]; public static $index3Action=[ 'def'=>[ 'id'=>1 ], 'm1'=>[ 'id'=>1 ], 'm2'=>[ 'id'=>2 ], ]; // http://api.local.com/index/index/index3/ // http://api.local.com/index/index/index3/data/def // http://api.local.com/index/index/index3/data/m1 // http://api.local.com/index/index/index3/data/m2

本文开发(php)相关术语:php代码审计工具 php开发工程师 移动开发者大会 移动互联网开发 web开发工程师 软件开发流程 软件开发工程师

主题: 浏览器PHPNginx数据EDI工作效率
分页:12
转载请注明
本文标题:ysapi:由 Swoole + yaf 实现 socket 服务基础框架
本站链接:http://www.codesec.net/view/523130.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(php) | 评论(0) | 阅读(19)