Phalcon+Swoole 无侵入解决方案 PhaService

简介:

Phalcon有着强大的性能同时又具备完整的MVC模式,
Swoole也具备在Phalcon之外的其他能力,如果把两者无缝的结合,
一定是一个不错的案例.

所以本项目 同时支持 Nginx+Phalcon 与 Swoole+Phalcon,
如果使用Nginx做负载均衡,可以做到无缝衔接,有Nginx+php-fpm的稳定,
同时也能享受Swoole对于API的超高性能.

本案例可以作为系统服务使用, 也可以做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 read
Requests/sec:  24104.01
Transfer/sec:      3.64MB

非常不错的结果.

Installation

** Web服务兼容Nginx+PHP-FPM模式,可以参考Phalcon的Nginx配置.

依赖:

Ubuntu 16.04LTS/18.04LTS
PHP: 7.0+, 推荐 7.2或以上
Beantalkd 队列处理依赖
php扩展 Phalcon 3.x+
php扩展 Swoole 2.x+
php扩展 Redis
php扩展 Pdo,Pdo MySQL

####初始化

composer install -o

开启 HttpServer 服务: 建议使用Nginx做负载均衡,使PHP-FPM可以和Swoole的HttpServer同时提供服务.

./web_serve start

可以使用sys/systemd/StdWebServer.GenService.php可以生成systemd service文件, 根据提示安装成服务.

cd sys/systemd/
php StdWebServer.GenService.php

开启 WebSocketServer 服务:

./web_socket_serve start

可以使用 sys/systemd/StdWebSocketServer.GenService.php 可以生成systemd service文件, 根据提示安装成服务.

cd sys/systemd/
php StdWebSocketServer.GenService.php

Configuration

环境配置

在项目的/目录下,建立空文件 .development 或 .testing则指定里开发环境与测试环境, 没有文件为生产环境. 文件同时存在, 有限开启开发环境.

#开发环境
rm .testing && touch .development 

#测试环境
rm .development && touch .testing 

#生产环境
rm .development .testing 

数据库,Redis等配置:

Web与Cli分开配置,配置文件位于:

  • App部分: /app/config/config.php
  • Cli部分: /cli/config/config.php

Swoole Http Server 配置:

  • 配置文件: /sys/config/std_web_server.php

Swoole WebSocket Server 配置:

  • 配置文件: /sys/config/std_web_socket_server.php

Features

  • Phalcon 完整支持
  • Http 服务器
  • WebSocket 服务器
  • 多进程Task Worker 任务处理
  • Beantalk 队列
  • Systemd自启服务

Documents

###多进程Task任务处理 该服务会在任务处理完成后,持续拉起服务,所以可以实现类似php-fpm的特点, 任务处理指定次数后退出任务,服务会自动拉起服务.
具体可以参考/cli/tasks/MailSenderTask.php, 复写 RealWork 函数进行真实的任务处理即可, 调用方式:

#查看帮助信息
./run mailsender -h

#参数 6 为开启6个子进程同时处理任务
./run mailsender 6 

本文来自云栖社区合作伙伴“开源中国”

本文作者:局长

原文链接


相关文章
|
Java API PHP
(转载)为什么不推荐使用swoole和hyperf官方框架
(转载)为什么不推荐使用swoole和hyperf官方框架
3083 0
|
数据采集 网络协议 PHP
如何使用PHP的swoole扩展提高服务器并发能力
PHP的swoole扩展是一个高性能的网络通信框架,它可以让PHP开发者轻松地创建TCP/HTTP服务,来响应客户端的请求。但是,有些请求可能涉及到一些复杂和耗时的业务逻辑,如果在工作进程中直接处理,可能会影响服务器的并发能力。
147 0
如何使用PHP的swoole扩展提高服务器并发能力
|
Linux PHP Docker
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
674 0
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
|
消息中间件 网络协议 NoSQL
关于使用php理论实现swoole扩展的功能
关于使用php理论实现swoole扩展的功能
103 0
关于使用php理论实现swoole扩展的功能
|
设计模式 开发框架 安全
PHP开发框架对比:Laravel、Yii、Tp、Yaf、Swoole
Laravel是一套简洁、优雅的PHP 框架(PHP Web Framework)。让我们可以从杂乱的代码中解脱出来。Laravel可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
573 0
|
缓存 应用服务中间件 PHP
使用 Swoole 加速你的 CMS 系统,并实现热更新 (基于 Laravel 框架)
使用 Swoole 加速你的 CMS 系统,并实现热更新 (基于 Laravel 框架)
167 0
使用 Swoole 加速你的 CMS 系统,并实现热更新 (基于 Laravel 框架)
|
NoSQL 中间件 Java
2022年swoole流行的框架有哪些?
如果公司愿意提供付费服务支持,建议选择Hyperf,因为该框架对付费用户提供技术支持,并提供技术培训支持。 如果您无法提供付费,同时有PHP-FPM做切面式的性能优化需求,建议选择 SW-X 该框架支持纯框架实现的RPC服务,无任何第三方依赖的服务中心管理非常方便。 同时该框架除了提供Mysql、Redis、MonggoDB、RBMQ、Crontab、校验器、中间件、限流器等常用组件外,还提供了大量丰富的免费组件库,包括:身份证解析、经纬度反查省市区镇等大数据查询组件等,非常值得企业级开发使用。
|
消息中间件 监控 NoSQL
hyperf | 萌推 PHP 微服务化改造
刚进萌推时输出的一份文档, 现在回头看来, 有不少地方值得推敲. 先放到 blog 上, 权且抛砖引玉吧.
690 0
|
SQL 数据采集 缓存
基于Laravel的国产开源CMS,支持Swoole,含API接口
MyCms是一款基于Laravel开发的开源免费的自媒体博客CMS系统,适用于个人网站及企业网站开发使用。MyCms基于Apache2.0开源协议发布,免费且不限制商业使用,欢迎持续关注我们。
416 0
|
数据安全/隐私保护 Shell 网络安全
借助URLOS快速安装swoole环境
环境需求 最低硬件配置:1核CPU,1G内存(1+1)提示:如果你的应用较多,而主机节点的硬件配置较低,建议在部署节点时开通虚拟虚拟内存; 生产环境建议使用2G或以上内存; 推荐安装系统:Ubuntu-16.
874 0