背景:

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./

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 

三 。代码

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.\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文件同级 。执行

php index.php

备注: 也可以直接执行

php  /全路径/index.php

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

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

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

# 在第二个Shell窗口
telnet 127.0.0.1

输入

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 -

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

sh swoole_stop.sh

结果:

反看server 窗口

【swoole2.0】 PHP + swoole2.0 初体验的更多相关文章

  1. pytorch入门2.0构建回归模型初体验(数据生成)

    pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...

  2. firefox os 2.0版模拟器QQ初体验

    供firefox os 爱侣.firefox os 手机迟迟没有感到些许遗憾在中国上市会,但是,我们必须相信firefox os 登陆中国是迟早的事,腾讯QQ已经登陆firefox os 应用市场,今 ...

  3. Django3.0 异步通信初体验

    此前博主曾经写过一篇博文,介绍了Django3.0的新特性,其中最主要的就是加入对ASGI的支持,实现全双工的异步通信. 2019年12月2日,Django终于正式发布了3.0版本.怀着无比的期待,我 ...

  4. Django3.0 异步通信初体验(小结)

    2019年12月2日,Django终于正式发布了3.0版本.怀着无比的期待,我们来尝试一下吧! (附ASGI官方文档地址:https://asgi.readthedocs.io/en/latest/e ...

  5. pytorch入门2.2构建回归模型初体验(开始训练)

    pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...

  6. pytorch入门2.1构建回归模型初体验(模型构建)

    pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...

  7. ASP.NET2.0组件控件开发视频 初体验

    原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...

  8. vue.js2.0 自定义组件初体验

    理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ...

  9. ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)

    早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...

  10. (一)SpringBoot2.0基础篇- 介绍及HelloWorld初体验

    1.SpringBoot介绍: 根据官方SpringBoot文档描述,BUILD ANYTHING WITH SPRING BOOT (用SPRING BOOT构建任何东西,很牛X呀!),下面是官方文 ...

随机推荐

  1. e777. 获得JList组件的所有项

    // Create a list String[] items = {"A", "B", "C", "D"}; JLis ...

  2. (转)常见LCD接口

    LCD常用接口原理 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 xubin 平台信息:内核:linux2.6/linux3.0系统: ...

  3. Python——uuid

    uuid模块在Python 2.5以后引入,接口包括:不可变对象UUID(UUID类)和函数uuid1().uuid3().uuid4()和uuid5(),后面的四个函数用于生成 RFC 4122 规 ...

  4. ps4 如何导出切片 单个图片

    快捷键C,进行切片 按住ctrl+alt+shift+s存储为WEB格式的,在对话框中按ctrl键选中要导出的切片,右边栏中有JPG还有GIF等格式的,下面选仅选图像,即可,如果你没有设置的话,电脑有 ...

  5. 本地没问题 服务器 提示 Server Error in '/' Application

    一. 先用本机的 IIS 测试,不要用 VS 内附的 Web server,並配置 <customErrors mode="Off"/>,以將真實的錯誤原因顯示出來,看 ...

  6. 删除mac系统win10启动选择项

    打开终端输入:diskutil list找到EFI这个分区,挂载EFI分区diskutil mount /dev/disk0s1 回到Finder 删除除apple之外的两个文件夹就可以了(删除win ...

  7. git忽略已添加版本控制的文件

    今天使用git做maven项目的版本控制,刚开始搭建项目后,把所有文件全部提交了. 已经提交的文件,gitignore中后配置也无效了. 所以使用以下命令来操作,操作后要提交哦. 1.执行 git r ...

  8. SQL SERVER重置自动编号列(标识列)

    两种方法: 一种是用Truncate TRUNCATE TABLE name 可以删除表内所有值并重置标识值 二是用DBCC CHECKIDENT DBCC CHECKIDENT ('table_na ...

  9. XCODE 添加不同IOS版本的模拟器

    一.XCode->Preferences->Downloads, 可以下载模拟器.

  10. jsTree 插件

    html代码 <div id="jstree1"></div> js代码: <script src="__STATIC__/h5/js/jq ...