Swoole是国内牛人写的一个PHP的异步,并行,分步式扩展,是一个PHP的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池,AsyncTask,消息队列,毫秒定时器,异步文件读写,异步DNS查询。
Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。
下面在Ubuntu环境下安装一下Swoole扩展(前题:本人的Ubuntu环境看上篇博文)
1. 确认安装环境
仅支持Linux操作系统,核心代码兼容FreeBSD,需要调整某些编译的参数和细节才能通过
Linux内核版本2.3.32以上
PHP5.3.10以上版本
gcc4.4以上版本。核心代码兼容clang,需要关闭CPU亲和设置特性
cmake2.4+,编译为libswoole.so作为C/C++库时,需要使用cmake
2. 安装与配置
2. 1安装swoole:可pecl直接在线安装,或下载 releases版本的swoole编译安装
2.11编译安装swoole扩展
从此处下载: http://pecl.php.net/package/swoole
代码如下 | 复制代码 |
# cd swoole # phpize # ./configure # make && make install |
2.12 pecl安装swoole扩展
pecl不可用的请确认php安装目录的bin目录已加入系统变量
本文介绍的用pecl方式来安装
代码如下 | 复制代码 |
zzs@ubuntu:~$ sudo pecl install swoole downloading swoole-1.7.8.tgz … Starting to download swoole-1.7.8.tgz (412,906 bytes) ….done: 412,906 bytes 130 source files, building running: phpize sh: 1: phpize: not found If the command failed with ‘phpize: not found’ then you need to install php5-dev packageYou can do it by running ‘apt-get install php5-dev’ as a root userERROR: `phpize’ failed zzs@ubuntu:~$ sudo apt-get install php5-dev |
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
将会安装下列额外的软件包:
pkg-php-tools shtool
建议安装的软件包:
dh-make
下列【新】软件包将被安装:
php5-dev pkg-php-tools shtool
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 13 个软件包未被升级。
需要下载 0 B/527 kB 的软件包。
解压缩后会消耗掉 4,431 kB 的额外空间。
您希望继续执行吗? [Y/n] y
…
install ok: channel://pecl.php.net/swoole-1.7.8
configuration option “php_ini” is not set to php.ini location
You should add “extension=swoole.so” to php.ini
zzs@ubuntu:~$ sudo vim /etc/php5/mods-available/swoole.ini
里面加入内容
代码如下 | 复制代码 |
; configuration for php Swoole module extension=swoole.so php -m | grep swoole |
此时还没有swoole模块
代码如下 | 复制代码 |
sudo ln -s /etc/php5/mods-available/swoole.ini /etc/php5/cli/conf.d/20-swoole.ini |
下面两行酌情使用
代码如下 | 复制代码 |
sudo ln -s /etc/php5/mods-available/swoole.ini /etc/php5/apache2/conf.d/20-swoole.ini sudo ln -s /etc/php5/mods-available/swoole.ini /etc/php5/fpm/conf.d/20-swoole.ini php -m | grep swoole |
附php5配置文件说明
cd /etc/php5/
ls
apache2 cli fpm mods-available
我的系统这里面有4个目录
其中 真正的扩展在mods-available目录中,其他的环境要想使扩展生效ubuntu使用软链接的方式使其生效,这样有个好处,当真正的配置文件发生变化,只需要改一处(modo-available)就可以了。
测试扩展
server.php:
代码如下 | 复制代码 |
<?php $serv = new swoole_server("0.0.0.0", 9501); $serv->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); }); $serv->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); $serv->start(); ?> |
client.php:
代码如下 | 复制代码 |
<?php $client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); $client->on("connect", function($cli) { $cli->send("hello world\n"); }); $client->on("receive", function($cli, $data){ echo "Receive: $data\n"; }); $client->on("error", function($cli){ echo "connect fail\n"; }); $client->on("close", function($cli){ echo "close\n"; }); $client->connect('127.0.0.1', 9501, 0.5); ?> |
最后感谢作者rango为php开发出这么牛的扩展,为开源事业做出贡献,希望php越来越有范儿