【swoole2.0】 PHP + swoole2.0 初体验

背景:

centos7   PHP7.1   swoole2.0

准备工作: 

  一、  swoole  扩展安装

  1 下载swoole

cd  /usr/local
wget -c https://github.com/swoole/swoole-src/archive/v2.0.8.tar.gz
tar -zxvf v2.0.8.tar.gz
cd swoole-src-2.0.8/

    2 编译& 安装

  使用phpize来生成php编译配置

  ./configure 来做编译配置检测

  make进行编译,make install进行安装

 phpize
 ./configure
 make && make install

   3 修改php.ini 加载swoole扩展

extension=swoole.so

 4 重启服务器  

service nginx restart 
service php-fpm restart

5 验证是否安装成功

php -m

  二、  telnet 服务安装

1 安装   telnet    telnet-server

yum install  telnet  telnet-server     

 2  检测是否安装成功 

rpm -qa telnet-server 
rpm -qa telnet 

3 重新启动xinetd守护进程

由于telnet服务也是由xinetd守护的,所以安装完telnet-server,要启动telnet服务就必须重新启动xinetd 

service xinetd restart

4 测试:查看TCP的23端口是否开启正常 

netstat -tnl |grep 23

 三 。代码

1 在项目目录 创建 index.php 文件 写入以下代码:

//创建Server对象,监听 127.0.0.1:9502端口
$serv = new swoole_server("127.0.0.1", 9502); 

//监听连接进入事件
$serv->on('connect', function ($serv, $fd) {  
    echo "Client: Connect.
";
});

//监听数据发送事件
$serv->on('receive', function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: ".$data);
});

//监听连接关闭事件
$serv->on('close', function ($serv, $fd) {
    echo "Client: Close.
";
});

//启动服务器
$serv->start(); 

这里就创建了一个TCP服务器,监听本机9502 端口,你也可以改成其他的端口号(服务器必须支持此端口)

2 启动server : cd到你得项目目录下。与index.php文件同级 。执行

php index.php

备注: 也可以直接执行

php  /全路径/index.php

这个时候,其实Server已经启动了,并且正在运行,监听了本机的9502端口,此时Server处于等待的状态,所以没有任何输出。

PS: 启动之后,不要动了, 便于查看客户端的链接信息。测试成功之后。可以关闭。纯用客户端

3  我们新开一个窗口 ,使用telnet 链接  

# 在第二个Shell窗口
telnet 127.0.0.1  9502

输入

hello

结果如下

 此时,我们再返回第一个窗口,就会看到刚才卡住的光标有输出了:

 

输出的正是我们在OnConnect回调中设置的内容。

 4  注意这句话: 

Escape character is '^]'. 

这个提示的意思是按Ctrl + ] 会呼出telnet的命令行,出来telnet命令好之后就可以执行telnet命令,例如退出出telnet是quit.

如果你需要退出telnet ,就先使用 Ctrl + ]  呼出 命令行。然后输入

quit

切换到 server窗口,会看到关闭的提示

这样子说明整个过程成功了。

 5 断开链接

    如果修改了index.php,必须断掉之前,然后重新打开。
    新建脚本  起名  swoole_stop.sh  (网上找的,我不会写,过!)

#! /bin/bash
ps -eaf |grep "index.php" | grep -v "grep"| awk '{print $2}'|xargs kill -9

这需要放在和  index.php 同一个文件夹。
我们需要cd到这个文件夹,执行

sh swoole_stop.sh

结果:

反看server 窗口

原文地址:https://www.cnblogs.com/richerdyoung/p/8316803.html