在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:PhaService开源软件地址:https://gitee.com/jackyzux/PhaService开源软件介绍:PhaServicePhalcon + Swoole 无侵入解决方案Phalcon有着强大的性能同时又具备完整的MVC模式, 所以本项目 同时支持 Nginx+Phalcon 与 Swoole+Phalcon, 本案例可以作为系统服务使用, 也可以做Restful开发使用,作为Web使用更是毫无问题. 使用 wrk 做的的压测, 在MBP上的结果: wrk -c10000 -d10s --latency http://127.0.0.1:8080/testRunning 10s test @ http://127.0.0.1:8080/test 2 threads and 10000 connections Thread Stats Avg Stdev Max +/- Stdev Latency 38.66ms 50.01ms 266.35ms 81.83% Req/Sec 12.97k 1.54k 16.65k 88.17% Latency Distribution 50% 11.53ms 75% 68.33ms 90% 116.48ms 99% 183.72ms 242375 requests in 10.06s, 36.59MB readRequests/sec: 24104.01Transfer/sec: 3.64MB 非常不错的结果. Installation** Web服务兼容Nginx+PHP-FPM模式,可以参考Phalcon的Nginx配置. 依赖:
####初始化 composer install -o 开启 HttpServer 服务:建议使用Nginx做负载均衡,使PHP-FPM可以和Swoole的HttpServer同时提供服务. ./web_serve start 可以使用 cd sys/systemd/php StdWebServer.GenService.php 开启 WebSocketServer 服务: ./web_socket_serve start 可以使用 cd sys/systemd/php StdWebSocketServer.GenService.php Configuration环境配置在项目的/目录下,建立空文件 #开发环境rm .testing && touch .development #测试环境rm .development && touch .testing #生产环境rm .development .testing 数据库,Redis等配置:Web与Cli分开配置,配置文件位于:
Swoole Http Server 配置:
Swoole WebSocket Server 配置:
Features
Documents###使用Composer建立项目'''bashcomposer create-project smices/pha-service -s dev''' ###多进程Task任务处理该服务会在任务处理完成后,持续拉起服务,所以可以实现类似php-fpm的特点, 任务处理指定次数后退出任务,服务会自动拉起服务. #查看帮助信息./run mailsender -h#参数 6 为开启6个子进程同时处理任务./run mailsender main 6 #查看队列任务数量./run mailsender info 添加数据到邮件队列: <?php$mq = new Beanspeak\Client(['host' => '127.0.0.1', 'port' => '11300']);$data = [ 'to' => ['[email protected]', 'JACKY JU'], 'subject' => '测试标题', 'content' => 'HELLO'];$mq->putInTube('MAIL_SENDER', $data); ** Beantalk 队列可以使用 https://github.com/xuri/aurora 可视化工具进行操作管理. Web Socket 的使用WebSocket 使用Task DI, 所以控制器位于 /cli/wsockets/目录下.示例可以查看 /cli/wsockets/MainTask.php //...public function mainAction(){ // 参数解析,务必加上,放在initialize中,只有mainAction生效,其他Action无效,所以请务必啰嗦的加上 // 也有可能是我的Phalcon版本问题 $this->parseArguments(); // 请在这里写入真实逻辑业务处理 //将结果返送给客户端, 发送内容是String, Int, Object都行 $this->send('WELCOME');}//end//... 发送指令示例:JSON格式转字符.可以使用JSON.stringify({...})把Object格式转换成String格式 //...websocket.send('{"cmd":"main.whoami","argv":"anything"}');//... 返回格式示例:cmd: 调用的原始命令,在于异步任务处理是,可以根据cmd找回呼叫的指令 {"cmd":"main.whoami","ret":3} |
请发表评论