cygwin swoole_swoole入门--------基础概念
学习swoole我们要首先了解下网络通信架构
B/S结构 (Browser/Server):又称浏览器/服务器模式。
这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。
C/S结构(Client/Server,客户/服务器模式)
客户端需要安装专用的客户端软件。通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可以充分利用两端硬件环境的优势。客户端进行用户界面/事物处理,服务器进行数据处理。
两者比较
C/S架构 可以保持长连接,长时间未发送持续链接包将断开链接。
B/S 短链接 一次请求只返回一次结果,当用户访问浏览器,只会响应一次不可多次交互
b/s架构如果想实现客户端与服务端的双向通信,一般可以通过轮询或长轮询方式,但这两种方式相当消耗资源,如果访问量较高,也会对服务器造成一定的压力。此时就体现websocket的优势。
swoole与workman比较
有人说如果想实现双向通信workerman也可以啊,为何要使用swoole。一个东西得出现必然有出现的道理,相互比较择优选择才会更好。
swoole是PHP的一个扩展,由C/C++语言开发,对于内存管理,数据结构,通信协议等要比PHP开发的workerman效率高很多。 使用 PHP + Swoole 作为网络通信框架,可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。
从本质来说,swoole属于C/S架构网络编程。
说了那么多让我们来看看swoole能做什么。
应用场景
聊天室开发、游戏、物联网等场景中都有应用。
下载swoole编译安装
环境准备 centos7
宝塔7.0
PHP 7.3
swoole :4.4.12
1.安装
swoole 是php 的扩展,支持在Linux 下,在window 下需要 安装cgywin,Cygwin是一个在windows平台上运行的类UNIX模拟环境
window安装参考https://www.cnblogs.com/chenjunwu/p/10953652.html
这里我们只演示在linux下的安装
https://github.com/swoole/swoole-src/releases下载对应版本
这里我们下载4.4.12这个版本
然后上传到服务器 对应目录 /www/server/swoole/
tar -zxvf swoole-src-4.4.12.tar.gz
cd /swoole-src-4.4.14
phpize
find / -name php-config // 不要一对一复制,请根据实际情况查看
./configure --with-php-config=/www/server/php/73/bin/php-config
make
make install
编译安装完成后找到php.ini 文件
find / -name php.ini //根据实际情况找到php.ini文件
vi /www/server/php/73/etc/php.ini
添加 extension=swoole.so
:wq 保存并退出
然后 /etc/init.d/php-fpm-73 restart
重启php-fpm
php --ri swoole | grep Vers 查看swoole版本
初体验
// 1.创建swoole 默认创建一个同步阻塞tcp服务
//创建Server对象,监听 127.0.0.1:9501端口
$serv = new SwooleServer("127.0.0.1", 9501); //监听连接进入事件
$serv->on('Connect', function ($serv, $fd) { echo "Client: Connect.n";
});
// 2.注册事件
//监听数据接收事件
$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->on('Start',function($serv){
echo '启动swoole'
})
// 3.启动服务器
$serv->start(); //阻塞与非阻塞
浏览器如何解析域名
1.域名解析:浏览器解析域名对应的IP地址;
//DNS Domain Name System 域名系统 将域名映射为IP地址的过程就称为“域名解析”。DNS就是进行域名解析的服务器
2.发起TCP的3次握手 :TCP 传输控制协议
//1.拿到IP地址后,浏览器第一次发起连接请求(试探),进入等待回复状态,(没有携带数据)
//2.服务器端接收到请求之后,如果同意连接,向客户端发送确认;
//3.客户端收到确认后需再发一次请求,此时携带要发送给Server的数据,服务器端收到客户端确认后,此时TCP连接,可以发起Http请求。
3.建立TCP连接后发起http请求
4.服务器响应http请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
6.浏览器对页面进行渲染呈现给用户
更好的学习了解swoole 我们可以下载这个组件
下载swoole-ide-helper
cygwin swoole_swoole入门--------基础概念相关推荐
- ROS wiki系列|ROS入门基础概念讲解
上一期我们对ROS wiki中ROS部分进行了着重讲解,回顾戳这 这一期我们主要介绍ROS-getting started部分的一些基本概念 相关wiki页面:http://wiki.ros.org/ ...
- 统计学入门基础概念问答(统计学方法的分类、统计数据的分类等)
1.统计学概念 什么是统计学?(statistics) 统计学是收集.分析.表述和解释数据的科学(不列颠百科全书). 2.统计学方法的分类 描述统计学 (descriptive statistics) ...
- 大数据入门 - 基础概念
文章目录 1. 发展历史 2. 分布式系统 可靠性 可扩展性 可维护性 4. 单机引擎的问题 事务 写入和存储 数据的序列化 3. GFS(Google File System) master 的快速 ...
- 深入浅出区块链 #1 入门基础概念辨析
由公开资料搜集整理和加工形成,仅用于笔记整理,如有侵权联系删除. 区块链理论概述 什么是区块链? Blockchain 是什么?:正在兴起的交易服务平台:使用密码学算法防篡改的账簿:共享帐簿 (Sha ...
- 1.基础入门——基础概念
域名 什么是域名? 又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置).由于IP地址具有不方便记忆并且不能显示 ...
- CPU和GPU及CUDA入门基础概念
CPU与GPU 1 CPU与GPU的关系:smile: 1.1 CPU与GPU各自特点 2 一些零碎的CUDA入门知识:blush: 2.1 函数修饰符 2.2 线程.线程快.线程格 2.3 什么是核 ...
- Python爬虫==入门基础概念
HTTP请求 1.首先需要了解一下http请求,当用户在地址栏中输入网址,发送网络请求的过程是什么? 可以参考我之前学习的时候转载的一篇文章一次完整的HTTP事务过程–超详细 2.还需要了解一下htt ...
- postman——入门基础——概念理解
URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下:schema://host[:port#]/path/.../[?query-string][ ...
- 股市入门基础 :基本术语和概念的解读
文章目录 股市入门基础 :基本术语和概念的解读 1.换手率 2.溢价率 3.市净率 4.市盈率 5.资产负债率 6.实体涨幅 7.现均差 8.委比 9.内盘 10.外盘 11.每股净资产 12.潮汐 ...
最新文章
- leetcode 113. 路径总和 II(Path Sum II)
- LeetCode 875. 爱吃香蕉的珂珂(二分查找)
- (桌面虚拟化最佳实践--呼叫中心系统优化之二)存储和服务器优化项目
- mysql安装过程遇到的问题_个人在mysql安装过程中遇见的问题
- Linux虚拟文件系统VFS的相关数据结构和操作
- vue教程1-03 v-for循环
- 企业架构-数据服务总线思路
- Python初学系列——天天向上的力量
- 私有云的优缺点_私有云的优缺点是什么?与公有云的区别
- Java用户注册手机短信验证码校验功能实现
- Chrome浏览器显示“Adobe flash player已过期”问题之解决
- 报表引擎终于做出来了!!!
- 关于win10 链接安卓设备报错winusb.sys未经签名的解决办法
- JavaScript摘录(二)
- 首选dns服务器地址最快,各地首选dns地址大全【图解】
- PowerSyncKM 包尔星克 对拷线无法自动链接windows和统信系统
- 如何远程连接另外一台电脑
- 病理与病理生理学【5】
- 三西格玛和六西格玛区别是什么?优思学院用一幅图告诉你
- 基于google云平台实现音频转文字
热门文章
- 画瀑布图_道砟石上的庐山瀑布惟妙惟肖
- vue的matcher_vue-router工作原理概述和问题分析
- soundbar未来发展_智能电视时代 Soundbar未来发展之路
- python数据库操作框架_python bottle 框架操作数据库
- linux清空在用文件夹,linux清空文件夹命令问题
- 操作系统原理_读懂操作系统之缓存原理(cache)(三)
- 数学知识巧学JCF(Java Collections framework)
- npm install 安装软件,出现 operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache'...
- solr7.4.0+mysql+solrj(简而优美)
- java split函数报错