非常教程

Swoole教程

Swoole 教程

Swoole 编译安装

  • BashOnWindows环境下必须关闭daemonize选项

Swoole编译安装步骤

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

  • 请下载releases版本的swoole,直接从github主干上拉取最新代码可能会编译不过
  • 如果当前用户不是root,可能没有php目录的写权限,安装时需要sudo或者su
  • 如果是在git分支上直接git pull更新代码,重新编译前务必要执行make clean

安装准备

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

php-5.3.10 或更高版本
gcc-4.4 或更高版本
make
autoconf

下载地址

  • https://github.com/swoole/swoole-src/releases
  • http://pecl.php.net/package/swoole

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

cd swoole
phpize
./configure
make 
sudo make install

(注:swoole的./configure有很多额外参数,可以通过./configure --help命令查看,这里仅开启其中async-mysql项,其他均选择默认项) 这里是./configure编译配置的额外参数,用于开启某些特性

1.8.7或更高版本不再需要设置--enable-async-mysql和--enable-async-httpclient,async_mysql和async_httpclient改为内置

--enable-swoole-debug

打开调试日志,开启此选项后swoole将打印各类细节的调试日志。生产环境不要启用。

--enable-sockets

增加对sockets资源的支持,依赖sockets扩展。开启此参数,swoole_event_add就可以添加sockets扩展创建的连接到swoole的事件循环中。

--enable-async-mysql

增加异步mysql支持, 依赖mysqli和mysqlnd扩展。

--enable-async-redis

增加异步Redis客户端支持, 依赖hiredis库

--enable-async-httpclient

增加异步Http和WebSocket客户端支持

--enable-ringbuffer

开启RingBuffer内存池

此设置为试验性质,主要用于提升性能,生产环境请不要开启

--enable-openssl

启用SSL支持

PECL

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

pecl install swoole

配置php.ini

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

extension=swoole.so

通过php -m或phpinfo()来查看是否成功加载了swoole,如果没有可能是php.ini的路径不对,可以使用php -i |grep php.ini来定位到php.ini的绝对路径。

安装成功后通过phpinfo()查看到的信息:

Swoole 编译安装

make或make install无法执行或编译错误

NOTICE: PHP message: PHP Warning: PHP Startup: swoole: Unable to initialize module

Module compiled with module API=20090626

PHP compiled with module API=20121212

These options need to match

in Unknown on line 0

php版本和编译时使用的phpize和php-config不对应,需要使用绝对路径来进行编译。使用绝对路径执行PHP。

/usr/local/php-5.4.17/bin/phpize
./configure --with-php-config=/usr/local/php-5.4.17/bin/php-config
/usr/local/php-5.4.17/bin/php server.php

缺少mysql头文件

php_mysqli_structs.h:64:23: fatal error: my_global.h: No such file or directory

没有找到mysqlclient的头文件,需要安装mysqlclient-dev

建议自行编译php,不要使用Linux包管理系统自带的php版本

缺少pcre.h头文件

fatal error: pcre.h: No such file or directory

原因是缺少pcre,需要安装libpcre

Cannot find autoconf

phpize命令需要autoconf工具,请先安装它。

make install失败

make install需要root权限,如果不是以root用户登录的,请用sudo或su,再进行安装。

修改了php.ini后,php -m或phpinfo中没有swoole

php -i|grep php.ini

查看加载的php.ini路径,确认加载了正确的php.ini。

修改php.ini,打开错误显示,查看是否存在启动时错误。

display_errors => On  
display_startup_errors => On

error: too many arguments to function 'zend_exception_error'

你的PHP版本低于PHP-5.3.10,请升级PHP版本。

如果还是编译失败了怎么办?

不要气馁,加入我们的开发组QQ群:495864936,你的问题会在24小时内被解决。

Swoole

Swoole是一个PHP的C扩展,可用来开发PHP的高性能高并发TCP/UDP Server。Swoole的网络IO部分基于epoll/kqueue事件循环,是全异步非阻塞的;业务逻辑部分使用多进程同步阻塞方式来运行,这样既保证了Server能够应对高并发和大量TCP连接,又保证业务代码仍然可以简单的编写。Swoole与Node.js相比更强大,支持同步/异步、多进程并行,Swoole提供了进程生命周期管理、内存保护机制,开发者无需考虑底层细节,专注于业务逻辑和功能的开发。

主页 https://www.swoole.com/
源码 https://github.com/swoole/swoole-src

Swoole目录

1. Swoole 教程
2.Swoole实例