Swoole开发文档
发布者:admin 发表于:458天前 阅读数:175 评论:0
关键词: 开发文档 进阶 swoole php

Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务高性能WebWebSocket服务物联网实时通讯游戏微服务等,使 PHP 不再局限于传统的 Web 领域。

 

安装 Swoole

Swoole 扩展是按照 PHP 标准扩展构建的。使用 phpize 来生成编译检测脚本,./configure 来做编译配置检测,make 进行编译,make install 进行安装。

  • 如无特殊需求,请务必编译安装 Swoole 的最新 release 版本或 v4.4LTS
  • 如果当前用户不是 root,可能没有 PHP 安装目录的写权限,安装时需要 sudo 或者 su
  • 如果是在 git 分支上直接 git pull 更新代码,重新编译前务必要执行 make clean
  • 仅支持 Linux(2.3.32 以上内核)、FreeBSDMacOS 三种操作系统
  • 低版本 Linux 系统(如 CentOS 6)可以使用 RedHat 提供的 devtools 编译,参考文档
  • 在 Windows 平台,可使用 WSL(Windows Subsystem for Linux) 或 CygWin
  • 部分扩展与 Swoole 扩展不兼容,参考扩展冲突

安装准备

安装前必须保证系统已经安装了下列软件

  • 4.8 版本需要 php-7.2 或更高版本
  • 5.0 版本需要 php-8.0 或更高版本
  • gcc-4.8 或更高版本
  • make
  • autoconf

快速安装

1. 下载 swoole 源码

2. 从源码编译安装

下载源代码包后,在终端进入源码目录,执行下面的命令进行编译和安装

ubuntu 没有安装 phpize 可执行命令:sudo apt-get install php-dev 来安装 phpize

cd swoole-src && \
phpize && \
./configure && \
make && sudo make install

3. 启用扩展

编译安装到系统成功后,需要在 php.ini 中加入一行 extension=swoole.so 来启用 Swoole 扩展

进阶完整编译示例

初次接触 Swoole 的开发者请先尝试上方的简单编译,如果有进一步的需要,可以根据具体的需求和版本,调整以下示例中的编译参数。编译参数参考

以下脚本会下载并编译 master 分支的源码,需保证你已安装所有依赖,否则会遇到各种依赖错误

mkdir -p ~/build && \
cd ~/build && \
rm -rf ./swoole-src && \
curl -o ./tmp/swoole.tar.gz https://github.com/swoole/swoole-src/archive/master.tar.gz -L && \
tar zxvf ./tmp/swoole.tar.gz && \
mv swoole-src* swoole-src && \
cd swoole-src && \
phpize && \
./configure \
--enable-openssl \
--enable-http2 && \
make && sudo make install

PECL

注意: PECL 发布时间晚于 GitHub 发布时间

Swoole 项目已收录到 PHP 官方扩展库,除了手动下载编译外,还可以通过 PHP 官方提供的 pecl 命令,一键下载安装

pecl install swoole

通过 PECL 安装 Swoole 时,在安装过程中它会询问是否要启用某些功能,这也可以在运行安装之前提供,例如:

pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes"' swoole

#或者
pecl install --configureoptions 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes"' swoole

添加 Swoole 到 php.ini

最后,编译安装成功后,修改 php.ini 加入

extension=swoole.so

通过 php -m 来查看是否成功加载了 swoole.so,如果没有可能是 php.ini 的路径不对。
可以使用 php --ini 来定位到 php.ini 的绝对路径,Loaded Configuration File 一项显示的是加载的 php.ini 文件,如果值为 none 证明根本没加载任何 php.ini 文件,需要自己创建。

对 PHP 版本支持和 PHP 官方维护版本保持一致,参考 PHP 版本支持时间表

其他平台编译

ARM 平台(树莓派 Raspberry PI)

  • 使用 GCC 交叉编译
  • 在编译 Swoole 时,需要手动修改 Makefile 去掉 -O2 编译参数

MIPS 平台(OpenWrt 路由器)

  • 使用 GCC 交叉编译