EasySwoole是啥?EasySwoole 是一款基于Swoole Server 开发的常驻内存型的分布式PHP框架,专为API而生,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失。
-·- 全文结构 -·-**
Swoole框架的选择
- 1、Swoole框架的选择
-
- *
在开篇《Cygwin:Windows系统下的Linux开发环境》中讲到了Swoole是一个PHP的协程高性能网络通信引擎,使用C/C++语言编写,提供了多种通信协议的网络服务器和客户端模块。
它可以方便快速的实现 TCP/UDP服务、高性能Web及WebSocket服务、物联网、实时通讯、游戏、微服务等,使PHP不再局限于传统的Web领域。
Swoole 是按照PHP的标准扩展构建的。使用phpize来生成编译检测脚本,./configure 来做编译配置检测,make进行编译,make install进行安装。
对于初学者来说,一上来就直接学习PHP扩展(swoole),估计会有点懵。所以在这里选择一个基于Swoole开发的框架来进行学习。
基于Swoole的开源框架有很多,如Swoft、EasySwoole、Hyperf,另外ThinkPHP、LaravelS也都对Swoole进行了支持。
在具体的框架选择上因人(项目)而异,Swoft框架很全面,其注释路由AOP(面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术)实体Bean等都明显源自于Java,写代码时有明显的Java风格,对于Java转PHP的开发者来说可能比较友好。
Swoft官方地址:https://www.swoft.org/
Hyperf,是Swoft开发组中的几位的成员出来开发的一个框架,也是拥有了Swoft优秀的基因基础上,但不再强制注释,集成大量企业级开发的组件,完善丰富的文档,完善的项目测试用例。
Hyperf官方地址:https://www.hyperf.io/
EasySwoole是我个人比较喜欢的,它不像Laravel或者Swoft那样重,但是足够灵活好用。在数据库方面支持来自Laravel的Eloquent、来自ThinkPHP5的think-orm等可选,模板引擎也支持来自Laravel的blade、来自ThinkPHP5的think-template和老牌的smarty。
EasySwoole的开发过程基本上和ThinkPHP框架使用的方式差不多,如果你有ThinkPHP开发基础,且开发的项目不是很复杂,那么EasySwoole是一个不错的选择!
- 2、EasySwoole框架简介
-
- *
EasySwoole 是一款基于Swoole开发的常驻内存型的分布式PHP框架,专为API而生,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失。
官方地址:https://www.easyswoole.com/。
Easyswoole的前身EasyPHP-Swoole,后更名为Easyswoole,目前更新到3.x版本。腾讯公司的IEG部门、WEGAME部门、网宿科技(国内CDN厂家)、360金融、360小游戏(Actor)、 9377小游戏、厦门美图网、蝉大师等公司都在使用。
EasySwoole 高度封装了Swoole而依旧维持Swoole原有特性,支持同时混合监听HTTP、自定义TCP、UDP协议,支持多线程,EventLoop,事件驱动,异步,Worker进程组,Task异步任务,毫秒定时器,SSL/TLS隧道加密 EventLoop API,让用户可以直接操作底层的事件循环,将socket,stream,管道等Linux文件加入到事件循环中。
同时支持分布式微服务及RPC,另外还提供协程微信公众号与小程序SDK协程协程版微信、支付宝支付SDK在内的各种开箱即用的常用组件。让开发者以最低的学习成本和精力编写出多进程,可异步,高可用的应用服务。
在编写代码规范上EasySwoole采用驼峰法,项目中类名称与类文件(文件夹)命名,均为大驼峰,如:AppClass,变量与类方法为小驼峰,如:appValue。
EasySwoole的基础运行环境:PHP 版本大于等于7.1;Swoole 拓展版本大于等于 4.4.15;pcntl 拓展的任意版本;使用 Composer 作为依赖管理工具;使用 Linux / FreeBSD / MacOS 这三类操作系统(Windows系统安装Cygwin也可以模拟出Linux环境,参见《Cygwin:Windows系统下的Linux开发环境》)。
接下来,进入基础运行环境的搭建。
- 3、EasySwoole基础环境的搭建
-
- *
- 3.1、检查PHP版本
打开shell命令窗口,输入php -v,查看PHP版本,确保版本大于等于7.1。
- 3.2、安装swoole
1、首先进入swoole的github下载地址,如果没有特殊需求,请选择最新版本开始下载https://github.com/swoole/swo...
2、选择gz压缩包下载,下载后复制到cygwin安装目录下的home目录下
3、点击cygwin快捷键进入虚拟终端并解压home目录下的刚下载的swoole安装包到/usr/local/swoole下(如果目录不存在,可以在/usr/local/目录下手动创建swoole),命令行:
tar xzvf /home/swoole-src-4.5.2.tar.gz -C /usr/local/swoole/
4、解压完后进入/usr/local/swoole/swoole-src-4.5.2/输入命令:phpize,生成编译的配置文件configure
5、输入命令:./configure && make && make install,配置、编译、编译安装swoole出现make test表示编译完成,按Ctrl+C退出编译
6、使用命令: php -i | grep php.ini,找到php cli使用的配置文件php.ini的路径,使用vi修改php.ini文件,输入“/extension” 查找extension,按n再次查找,在文件中添加一行:extension=swoole.dll(windows扩展的swoole.dll,Linux系统则增加swoole.so)。
7、添加完成后,按Esc,输入:wq 保存退出。使用命令:php -m,查看加载的模块,如果看到swoole,则扩展添加成功,到此Swoole环境搭建成功!
8、在cygwin界面进入swoole安装目录中的example目录下的http目录,输入命令:php server.php 命令,在浏览器打开:http://127.0.0.1:9501/,出现Hello Swoole表示运行成功。
- 3.3、安装Composer
1、在之前安装的swoole目录下新建文件夹composer,进入该文件夹下,运行命令:
php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
运行该命令后,可以在composer文件夹下多了一个composer-setup.php文件。执行
php composer-setup.php
2、如果执行过程中提示“The phar extension is missing.”,表示系统缺少php-phar扩展。打开Cygwin安装客户端进行下载并安装(安装步骤参见《Cygwin:Windows系统下的Linux开发环境》)。
3、执行php composer-setup.php完成后,再执行一下命令,出现composer表示安装成功。
php composer.phar
4、为了方便系统使用composer,执行下面的命令,这样就可以全局使用composer,如下图切换到根目录也能执行composer。
mv composer.phar /usr/local/bin/composer
- 4、运行EasySwoole
-
- *
- 4.1、安装EasySwoole
1、首先将composer切换阿里云镜像,然后执行安装命令。
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer require easyswoole/easyswoole=3.x
2、运行时出现错误,“ Out of memory (allocated 40370176) (tried to allocate 2097184 bytes) in phar ”表示内存超过了限制。首先修改php.ini配置为无限制:memory_limit = -1。修改后使用查询命令进行查询:php -r "echo ini_get('memory_limit').PHP_EOL;" 是否生效。
3、由于我安装的是Windows版本的PHP,貌似官方有个bug只能运行2M,尝试了各种设置都是无效,折腾了两天最后之后作罢!这也是Windows环境的不确定的地方。如果你也遇到了同样的问题,建议直接用我已经下载好的Vendor文件,放置在swoole/EasySwoole目录下。(移步公众号一线青年,点击本文原文链接,提取码:8q2a)。运行安装命令:
php vendor/easyswoole/easyswoole/bin/easyswoole install
4、安装完成后,既可以启动EasySwoole了,输入以下命令启动。启动后打开浏览器访问:http://localhost:9501 就可以看到EasySwoole的欢迎页面。
php easyswoole start
到此,EasySwoole就安装成功了!下一期我们正式进入EasySwoole框架的开发。小伙伴们,下次见拜了个拜~