Swoft2.0学习笔记目录
第一章:基础知识
1.课程简介
2.进程
3.案例:实现一个Master、Worker的进程
4.线程
5.实战:实现waitGroup功能
6.进程、线程、协程的区别
第二章:初识Swoft2.0
1.Swoft介绍
首个基于 Swoole 原生协程的新时代 PHP 高性能协程全栈框架,内置协程网络服务器及常用的协程客户端,常驻内存,不依赖传统的 PHP-FPM,全异步非阻塞 IO 实现,以类似于同步客户端的写法实现异步客户端的使用,没有复杂的异步回调,没有繁琐的 yield, 有类似 Go 语言的协程、灵活的注解、强大的全局依赖注入容器、完善的服务治理、灵活强大的 AOP、标准的 PSR 规范实现等等,可以用于构建高性能的Web系统、API、中间件、基础服务等等。
Swoft采用组件化管理,因此很容易扩展组件,如果官方提供的组件不能满足需求我们可以通过自己扩展来实现。另外Swoft很适用于微服务方面,内置RPC的支持,支持服务注册发现。内置了Consul服务发现的功能,仅需简单配置就可以实现微服务中的注册发现。
我们可以使用Swoft做什么?
- API接口
- 微服务
- 分布式应用
- Websocket服务器
- 任务处理 推送服务器
- 物联网服务器 多进程队列消费
在很长一段时间里面php一直被用于前端调用,很少人会用来写服务。自从Swoole出现之后使得php常驻内存成了可能,我们也可以在这里面使用上以前在php-fpm不太好使用的设计模式。例如:容器、注入、注解等。在非常驻内存框架里面如果我们使用容器当然也会有一定好处可以解决类的实例化和单例问题,但是有一个很大的问题,php在没有常驻内存的情况下,每一个请求进来都会不断的创建和销毁对象,会造成大量的资源浪费。
有冲突的
下面列出一些已知的和swoole有冲突的php扩展,请使用swoft时不要安装或禁用它们:
- xdebug
- xhprof
- blackfire
- zend
- trace
- uopz
推荐环境配置
可以查看 swoft 下 Dockerfile 文件
2.Swoft环境安装
Swoft环境要求
现在我们来介绍如何安装Swoft需要的环境。
环境要求
- PHP > 7.1
- Swoole > 4.3.0
- PHP包管理器Composer
- 连接迭代器依赖 pcre 库
- OpenSSL PHP扩展
- JSON PHP 扩展
- PDO PHP 扩展 (如需要使用到 MySQL 客户端)
- Redis PHP 扩展 (如需要使用到Redis 客户端)
课程实验环境
Linux(本文使用Centos6.8 64位)
安装git
PHP7.3.8
Swoole4.4
1、安装依赖
这个根据用户自己的需求安装相关依赖,依赖的安装可以根据php编译的时候带上的参数决定。
yum -y install \
gcc gcc-c++ wget vim make cmake automake autoconf kernel-devel ncurses-devel \
libxml2-devel pcre-devel openssl openssl-devel curl-devel libjpeg-devel \
libpng-devel pcre-devel libtool-libs freetype-devel gd zlib-devel file \
bison bison-devel patch mlocate flex diffutils readline-devel glibc-devel \
glib2-devel bzip2-devel gettext-devel libcap-devel libmcrypt-devel gmp-devel \
libxslt-devel git libevent libevent-devel perl-ExtUtils-MakeMaker package xz
2、安装Git
yum -y remove git
wget https://www.kernel.org/pub/software/scm/git/git-2.6.0.tar.gz --no-check-certificate
tar zxvf git-2.6.0.tar.gz
cd git-2.6.0
./configure --prefix=/usr/local/git
make
make install
echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/profile
source /etc/profile
给当前登陆的linux用户设置环境变量,当你使用的账号是非root账号设置环境变量使用git
echo "export PATH=$PATH:/usr/local/git/bin" >> ~/.bashrc
source ~/.bashrc
如果使用git clone出现 Peer certificate cannot be authenticated with known CA certificates
则可以关闭证书验证解决
git config --global http.sslVerify false
3、安装php
我编译的参数大家可以进行参考不一定需要跟我的一摸一样。
wget https://www.php.net/distributions/php-7.3.8.tar.gz --no-check-certificate
tar zxvf php-7.3.8.tar.gz
cd php-7.3.8
./configure --prefix=/usr/local/php \
--enable-fpm \
--with-config-file-path=/etc \
--with-libxml-dir --with-openssl \
--with-mysqli \
--enable-bcmath \
--with-bz2 \
--enable-calendar \
--with-curl \
--enable-exif \
--with-pcre-dir \
--enable-ftp \
--with-openssl-dir \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--enable-gd-jis-conv \
--with-gettext \
--with-gmp \
--with-mhash \
--enable-mbstring \
--with-onig \
--with-pdo-mysql \
--with-readline \
--enable-shmop \
--enable-soap \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-wddx \
--with-xmlrpc \
--with-xsl \
--with-pear \
--enable-shared \
--enable-inline-optimization \
--disable-debug \
--enable-xml \
--with-sqlite3 \
--with-iconv \
--with-cdb \
--enable-dom \
--enable-fileinfo \
--enable-filter \
--enable-json \
--enable-mbregex \
--enable-mbregex-backtrack \
--enable-pdo \
--with-pdo-sqlite \
--enable-session \
--enable-simplexml \
--enable-opcache \
--enable-mysqlnd \
--with-pdo-mysql=mysqlnd \