PHP + Swoole2.0 初体验(swoole入门教程)
环境:centos7 + PHP7.1 + swoole2.0
准备工作:
一、 swoole 扩展安装
1 、下载swoole
cd/usr/localwget -c https://github.com/swoole/swoole-src/archive/v2.0.8.tar.gztar -zxvf v2.0.8.tar.gzcdswoole-src-2.0.8/
2 编译& 安装
使用phpize来生成php编译配置;
./configure 来做编译配置检测;
make进行编译,make install进行安装;
phpize./configuremake && make install
3 、修改php.ini 加载swoole扩展
extension=swoole.so
4 、重启服务器
servicenginx restart service php-fpm restart
5 、验证是否安装成功?
php-m
二、 telnet 服务安装
1 、安装 telnet telnet-server
yuminstalltelnet telnet-server
2 、检测是否安装成功
rpm-qa telnet-server rpm -qa telnet
3 、重新启动xinetd守护进程
由于telnet服务也是由xinetd守护的,所以安装完telnet-server,要启动telnet服务就必须重新启动xinetd
servicexinetd restart
4 、测试:查看TCP的23端口是否开启正常?
netstat -tnl |grep23
三、 代码
1、 在项目目录 创建 index.php 文件
写入以下代码:
//创建Server对象,监听 127.0.0.1:9502端口$serv =newswoole_server("127.0.0.1",9502);//监听连接进入事件$serv->on('connect',function($serv, $fd){echo"Client: Connect.\n";});//监听数据发送事件$serv->on('receive',function($serv, $fd, $from_id, $data){ $serv->send($fd,"Server: ".$data);});//监听连接关闭事件$serv->on('close',function($serv, $fd){echo"Client: Close.\n";});//启动服务器$serv->start();
这里就创建了一个TCP服务器,监听本机9502 端口,你也可以改成其他的端口号(服务器必须支持此端口);
2、 启动server : cd到你的项目目录下。与index.php文件同级 。
执行
phpindex.php
备注: 也可以直接执行“php /全路径/index.php”;
这个时候,其实Server已经启动了,并且正在运行,监听了本机的9502端口,此时Server处于等待的状态,所以没有任何输出。
注意: 启动之后,不要动了, 便于查看客户端的链接信息。测试成功之后。可以关闭。纯用客户端
3、 我们新开一个窗口 ,使用telnet 链接
# 在第二个Shell窗口telnet127.0.0.19502
输入
hello
结果如下:
此时,我们再返回第一个窗口,就会看到刚才卡住的光标有输出了:
输出的正是我们在OnConnect回调中设置的内容。
4、注意这句话:
Escape characteris'^]'.
这个提示的意思是按Ctrl + ] 会呼出telnet的命令行,出来telnet命令好之后就可以执行telnet命令,例如退出出telnet是quit.
如果你需要退出telnet ,就先使用 Ctrl + ] 呼出 命令行。然后输入:
quit
切换到 server窗口,会看到关闭的提示:
这样子说明整个过程成功了。
5 、断开链接
如果修改了index.php,必须断掉之前,然后重新打开。
新建脚本 起名 swoole_stop.sh (网上找的,我不会写,过!)代码如下:
#! /bin/bashps -eaf |grep"index.php"| grep -v"grep"| awk'{print $2}'|xargskill-9
这需要放在和 index.php 同一个文件夹。
我们需要cd到这个文件夹,执行
shswoole_stop.sh
结果:
反看server 窗口: