up 第一次初识
swoole
是在2017年11月份,还是从朋友那头得知的当时他在做一个直播的项目为此脑壳疼了好久,我也是从哪天起打开了新世界的大门发现PHP
不只如此。说起来惭愧直到2019年4月份才真正的开始接触学习swoole
,所以今后会将自己的成长之路记录下来加油
swoole介绍
让我们先来了解下swoole
- swoole 简介 swoole是PHP的异步、并行、高性能网络通信引擎,使用纯C语言编写,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,异步Redis,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。
- swoole提供的功能库
swoole提供了哪些功能给我们用,以为我们用到哪些服务时,可以用swoole来帮我们实现。
- http服务 ,编写一个简单的web server。
- TCP/UDP服务 ,编写一个消息接受处理系统。
- 异步,可以异步的处理请求。
- 并发 ,可以并发的处理同一个业务逻辑。
- socket,socket通讯处理技术。
- 毫秒级别定时器,可以在php中使用定时器了。
- 协程,相比线程更稳定和好用。
如果你的业务中,有用到以上等特性,你又在用使用php,那么完全可以用swoole来完成了,再具体点的场景如下:
- 互联网
- 移动通信
- 企业软件
- 云计算
- 网络游戏
- 物联网(IOT)
- 车联网
- 智能家居等领域
- swoole的框架
- Hyperf 是基于 Swoole 4.4 实现的高性能、高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-FPM 的框架有质的提升,提供超高性能的同时,也保持着极其灵活的可扩展性,标准组件均基于 PSR 标准 实现,基于强大的依赖注入设计,保证了绝大部分组件或类都是 可替换 与 可复用 的。框架组件库除了常见的协程版的 MySQL 客户端、Redis 客户端,还为您准备了协程版的 Eloquent ORM、WebSocket 服务端及客户端、JSON RPC 服务端及客户端、GRPC 服务端及客户端、Zipkin/Jaeger (OpenTracing) 客户端、Guzzle HTTP 客户端、Elasticsearch 客户端、Consul 客户端、ETCD 客户端、AMQP 组件、Apollo 配置中心、阿里云 ACM 应用配置管理、ETCD 配置中心、基于令牌桶算法的限流器、通用连接池、熔断器、Swagger 文档生成、Swoole Tracker、Blade 和 Smarty 视图引擎、Snowflake 全局ID生成器 等组件,省去了自己实现对应协程版本的麻烦。Hyperf 还提供了 基于 PSR-11 的依赖注入容器、注解、AOP 面向切面编程、基于 PSR-15 的中间件、自定义进程、基于 PSR-14 的事件管理器、Redis/RabbitMQ 消息队列、自动模型缓存、基于 PSR-16 的缓存、Crontab 秒级定时任务、Translation 国际化、Validation 验证器 等非常便捷的功能,满足丰富的技术场景和业务场景,开箱即用。
- Swoft 首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。
- EasySwoole EasySwoole 是一款基于Swoole Server 开发的常驻内存型PHP框架,专为API而生,摆脱传统PHP运行模式在进程唤起和文件加载上带来的性能损失。EasySwoole 高度封装了Swoole Server 而依旧维持Swoole Server 原有特性,支持同时混合监听HTTP、自定义TCP、UDP协议,让开发者以最低的学习成本和精力编写出多进程,可异步,高可用的应用服务。
- SwooleDistributed SwooleDistributed 老牌Swoole框架拥有最完善的开发工具以及最强大的功能,首创SDHelper开发者工具包和开发者调试命令集,可以进行单元测试,捕获客户端流量分析,可视化的进行远程断点联调,还具备代码覆盖率检测的功能(swoole与xdebug扩展不兼容,SDHelper无需xdebug扩展),并且内置组件极其丰富(类MQTT强悍的订阅发布/Actor模型/内存高速缓存/事件派发/进程管理/定时任务/AMQP任务调度/后台监控/集群/微服务/RPC/异步连接池/自定义命令等等),开发者可以直接使用加快开发进度。几乎所有的功能都支持集群化,单机切换到集群无需对代码做任何的修改。如果业务开发比较复杂比如(游戏开发)那么SD框架将是你的不二之选。
环境部署-php7安装
一键安装包方式
简单粗暴适合快速安装,前期自己容易编译错误的时候,直接按照教程快速安装,可以用这种,up只知道两个一键安装
lnmp
oneinstack
这里up 推荐用 oneinstack
wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1 --php_option 7 --phpcache_option 1 --php_extensions zendguardloader,ioncube,sourceguardian,gmagick,fileinfo,imap,ldap,phalcon,yaf,redis,memcached,memcache,mongodb,swoole,xdebug --phpmyadmin --db_option 2 --dbinstallmethod 1 --dbrootpwd oneinstack --pureftpd --redis --memcached --iptables --reboot
编译安装
大体步骤:
- 解压
- configure
- make
- make install
生产环境下,自己掌握如何编译,并且安装扩展
- 首先通过wget命令下载到指定文件
Wget http://cn2.php.net/distributions/php-7.2.15.tar.gz
- 通过tar命令解压
tar -zxf php-7.2.15.tar.gz
- 进入目录利用
configure
生成安装文件 在安装包下面一般有个configure
, 是用来生成Makefile
,为下一步的编译做准备,你可以通过在configure
后加上参数来对安装进行控制,具体可以通过configure
--help
查看相应的命令,这里只指定了php目录跟配置文件目录,开放了其中一部分扩展./configure --prefix=/usr/local/php --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc -with-libxml-dir=/usr --with-mhash --with-openssl --with-mysqli=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-zlib --enable-zip --enable-inline-optimization --disable-debug --disable-rpath --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-pcntl --enable-sockets --without-pear --with-gettext --enable-session
- 编译前检查
想要编译必须要安装相应的依赖扩展库可以提前的下载这里使用yum来进行扩展安装,一般需要以下几个扩展支持,否则会出现错误
yum -y install gcc gcc-c libxml2-devel m4 autoconf pcre-devel make cmake bison openssl openssl-devel
- 正式安装
make && make install
- CentOS下将php和mysql命令加入到环境变量中
开发过程中、需要使用到php命令执行程序、但是php命令没有在全局命令中;每次执行都需要加上全路径特别麻烦,把php命令添加到全局变量中,以后每次只用输入php可以了在centos7.2当中就可以使用下面的方式进行添加
vim /etc/profile
文件然后执行source /etc/profile
让当前的配置生效 - 最后配置文件拷贝到指定的目录
php -i | grep Configuration
查询配置文件目录 将源码当中的配置文件指定到相应的目录cp php.ini-development /usr/local/php/etc/php.ini
- 扩展安装示例、通过yum安装依赖,然后在ext目录安装,同样的编译方式,比如curl的安装
yum install libcurl-devel
环境部署-swoole源码编译安装
代码语言:javascript复制Swoole安装方式跟php安装方式是一样的,下载解压、编译
# 下载
git clone https://github.com/swoole/swoole-src.git
#解压
cd swoole-src
# 编译安装
phpize
./configure
make && make install
ide提示工具
安装好之后呢。如果你还需要对你想对你的编辑器,比如:phpstrom 对swoole的代码提示功能,就可以下载帮助文件:https://github.com/swoole/ide-helper
点击setting选择languages 点击 号添加我们下载的文件