最近想用PHP写一个聊天网站,于是注意到了swoole这个扩展,看上它就是因为事件驱动异步非阻塞。
Swoole可以广泛应用于互联网、移动通信、企业软件、网络游戏、物联网、车联网、智能家庭等领域。 使用PHP+Swoole作为网络通信框架,可以使企业IT研发团队的效率大大提升,更加专注于开发创新产品。
Swoole底层内置了异步非阻塞、多线程的网络IO服务器。PHP程序员仅需处理事件回调即可,无需关心底层。与Nginx/Tornado/Node.js等全异步的框架不同,Swoole既支持全异步,也支持同步。
Swoole是开源免费的自由软件,授权协议是Apache2.0。企业和开发者均可免费使用Swoole的代码,并且在Swoole之上所作的修改可用于商业产品,无需开源。
- 国内Git镜像:http://git.oschina.net/matyhtf/swoole.git
- 新手入门教程:https://github.com/LinkedDestiny/swoole-doc
以上这段话摘自swoole官网,http://www.swoole.com/。
以下是我在Debain系统里的安装过程。我在Ubuntu14.04里是按照官方视频教程的过程,下载源码并本地编译完成的,如果有同学想挑战一下,也可以到http://wiki.swoole.com/wiki/page/230.html去跟着Rango安装。
swoole仅支持Linux/FreeBSD/Mac,如果你使用的是Windows系统,请安装一个虚拟机,VirtualBox/VMWare都可以。然后在虚拟机里安装Linux。
swoole已经加入到PHP的官方扩展库中,所以在Linux系统里只需要执行
pecl install swoole
但是,我在第一次安装的时候遇到了一个问题,提示我本机没有安装phpize,于是
sudo apt-get update sudo apt-get install php5-dev
缺少pcre.h ,于是
sudo apt-get install libpcre3 libpcre3-dev
再次执行安装命令,终于
于是按照提示,在php.ini添加extension=swoole.so
输入php –m 得到以下结果
恭喜你,安装成功了。
可以新建一个server.php 的demo测试一下
<?php $serv = new swoole_server("0.0.0.0", 9501); $serv->on('connect', function ($serv, $fd){ echo "Client:Connect. "; }); $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); }); $serv->on('close', function ($serv, $fd) { echo "Client: Close. "; }); $serv->start(); ?>
执行 php server.php
新开一个终端,使用telnet连接到你的服务器:
telnet 127.0.0.1 9501 > hello world > Swoole: hello world
如果提示地址冲突,可以更改源代码中的“9051”端口。