【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./
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 初体验的更多相关文章
- pytorch入门2.0构建回归模型初体验(数据生成)
pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...
- firefox os 2.0版模拟器QQ初体验
供firefox os 爱侣.firefox os 手机迟迟没有感到些许遗憾在中国上市会,但是,我们必须相信firefox os 登陆中国是迟早的事,腾讯QQ已经登陆firefox os 应用市场,今 ...
- Django3.0 异步通信初体验
此前博主曾经写过一篇博文,介绍了Django3.0的新特性,其中最主要的就是加入对ASGI的支持,实现全双工的异步通信. 2019年12月2日,Django终于正式发布了3.0版本.怀着无比的期待,我 ...
- Django3.0 异步通信初体验(小结)
2019年12月2日,Django终于正式发布了3.0版本.怀着无比的期待,我们来尝试一下吧! (附ASGI官方文档地址:https://asgi.readthedocs.io/en/latest/e ...
- pytorch入门2.2构建回归模型初体验(开始训练)
pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...
- pytorch入门2.1构建回归模型初体验(模型构建)
pytorch入门2.x构建回归模型系列: pytorch入门2.0构建回归模型初体验(数据生成) pytorch入门2.1构建回归模型初体验(模型构建) pytorch入门2.2构建回归模型初体验( ...
- ASP.NET2.0组件控件开发视频 初体验
原文:ASP.NET2.0组件控件开发视频 初体验 ASP.NET2.0组件控件开发视频 初体验 录了视频,质量不是很好,大家体验下.我会重新录制的 如果不清楚,可以看看http://v.youku. ...
- vue.js2.0 自定义组件初体验
理解 组件(Component)是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素, Vue.js 的编译器为它添加特殊功能.在有些情况 ...
- ASP.NET Core 3.0 上的gRPC服务模板初体验(多图)
早就听说ASP.NET Core 3.0中引入了gRPC的服务模板,正好趁着家里电脑刚做了新系统,然后装了VS2019的功夫来体验一把.同时记录体验的过程.如果你也想按照本文的步骤体验的话,那你得先安 ...
- (一)SpringBoot2.0基础篇- 介绍及HelloWorld初体验
1.SpringBoot介绍: 根据官方SpringBoot文档描述,BUILD ANYTHING WITH SPRING BOOT (用SPRING BOOT构建任何东西,很牛X呀!),下面是官方文 ...
随机推荐
- e868. 获取和设置本地外观
By default, Swing uses a cross-platform look and feel called Metal. In most cases, it is more desira ...
- [原创] Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法
MDK开发环境从V4升级到V5后,支持包不再是集成到开发环境当中,而是封装在PACK中,需要自行安装,比较麻烦. 搭建MDK开发环境以及破解的方法,在前面的文章中有详细说明,这里不再赘述,有兴趣的可以 ...
- python模块之psutil详解
一.psutil模块: 1.psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息 ...
- asp.net mvc用aspose.cells 导出xlsx格式的excel。无残留
public void Export() { HttpResponse Response = System.Web.HttpContext.Current.Response; // Load your ...
- NHibernate Isession管理
一个Session foreach (var item in favoriteId) { if (!string.IsNullOrEmpty(item)) { var favorite = _sess ...
- java-信息安全(一)-BASE64,MD5,SHA,HMAC,RIPEMD算法
概述 信息安全基本概念: BASE64 编码格式 Base58 编码 MD5(Message Digest algorithm 5,信息摘要算法) SHA(Secure Hash Algorithm, ...
- Linux环境下Redis安装配置步骤[转]
在LInux下安装Redis的步骤如下: 1.首先下载一个Redis安装包,官网下载地址为:https://redis.io/ 2.在Linux下解压redis: tar -zxvf redis-2. ...
- thinkphp中的类库与引用import引入机制
ThinkPHP的类库包括基类库和应用类库 控制器类 模块名+Action 例如 UserAction.InfoAction 模型类 模型名+Model 例如 UserModel.InfoModel ...
- 系统目录结构/ls命令/文件类型/alias命令
2.1/2.2 系统目录结构 2.3 ls命令 2.4 文件类型 2.5 alias命令 linux文件目录结构 linux文件结构 / 系统跟目录 root root用户主目录,存放启动linux ...
- VS2015常用快捷键
1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”: 2)前进到下一个光标位置:“Ctrl + Shift + - ”. 2.复制/剪切/删除整行代 ...