× 警告!旧版文档已经暂停维护,请查看新版文档。点击前往新版文档

常见问题

  • 仅支持 Linux,FreeBSD,MacOS,3类操作系统
  • Linux 内核版本 2.3.32 以上
  • PHP-5.3.10 以上版本,包括PHP7
  • gcc4.4 以上版本或者clang
  • cmake2.4+,编译为 libswoole.so 作为 C/C++ 库时需要使用 cmake

建议使用 Ubuntu14CentOS7 或更高版本的操作系统

PHP版本依赖

  • 仅支持 PHP-5.3.10 或更高版本
  • 不依赖 PHPstreamsocketspcntlposixsysvmsg 等扩展。PHP 只需安装最基本的扩展即可

推荐使用的Linux发行版

  • CentOS6.2+
  • Ubuntu12+
  • Debian6+

ARM平台(树莓派Raspberry PI)

  • 请使用 swoole-1.7.10 或更高版本
  • 使用 GCC 交叉编译
  • 在编译 Swoole 时,需要手工修改 Makefile 去掉 -O2 编译参数

MIPS平台(OpenWrt路由器)

  • 请使用 swoole-1.7.21 或更高版本
  • 使用 GCC 交叉编译

CygWin环境支持(Windows系统)

swoole-1.7.7 增加了对 cygwin 环境的支持,在 Windows 环境下,可以直接使用 cygwin + php 来跑 swoole 程序。

  • 安装 cygwin,并安装 gcc、make、autoconf、php 4个包
  • 下载swoole源码,在 cygwin-shell 中进行 phpize/configure/make/make install
  • 修改 php.ini,加入 swoole.so

cygwin 模式下需要对 PHP 进行简化,去掉不使用的扩展,避免进程占用内存过大,导致 Fork 操作失败

BashOnWindows

Windows 10系统增加了Linux子系统支持,BashOnWindows 环境下也可以使用 swoole。安装命令

apt-get install php7.0 php7.0-curl php7.0-gd php7.0-gmp php7.0-json php7.0-mysql php7.0-opcache php7.0-readline php7.0-sqlite3 php7.0-tidy php7.0-xml  php7.0-bcmath php7.0-bz2 php7.0-intl php7.0-mbstring  php7.0-mcrypt php7.0-soap php7.0-xsl  php7.0-zip
pecl install swoole
echo 'extension=swoole.so' >> /etc/php/7.0/mods-available/swoole.ini
cd /etc/php/7.0/cli/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
cd /etc/php/7.0/fpm/conf.d/ && ln -s ../../mods-available/swoole.ini 20-swoole.ini
  • BashOnWindows环境下必须关闭 daemonize 选项
  • 需要修改 config.h 关闭 HAVE_SIGNALFD

DockerOnWindows

Windows 下开发可以使用 Hyper-V+Docker 来方便的开发 Swoole 应用,安装好 Docker 后再 Settings 里的 Shared Droves 选项里共享代码所在磁盘。然后使用如下命令来快速启动 Docker 容器。

docker run --rm -t -i --name myapp -p 9501:9501 -v e:/path/to:/app:rw xutongle/php:7.1-fpm /bin/bash
  • e:/path/to 为源码所在路径
  • /app 为容器内路径
  • bash 里执行 cd /app && php server.php

  • LeiBris

    你好!请问哪套支持TCP长连接啊?

  • 哈喽喔得

    swoole_client is already connected

  • zhouleyu

    new swoole_client(SWOOLE_TCP | SWOOLE_KEEP) ,这样就表示启用长连接

  • fenshilian

    同时很多请求的时候到后面就会显示说 Connection close,这是什么导致的啊?

  • wolf

    韩老大,请教怎么通过php去平滑重启swoole?每次更新文件,都需要重启?

  • 寒雪孤梅独悬壁

    能创建TCP服务不能创建 其它服务 PHP Fatal error: Class 'swoole_http_server' not found

  • 寒雪孤梅独悬壁

    PHP Fatal error: Class 'swoole_websocket_server' not found 为什么一直都找不到这个类呢

  • 15833627275

    不知道为什么,我安装了swoole 异步扩展,链接mysql的时候,一直都是提示这个错误:Segmentation fault,我换了几个版本也不行