学习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入门--------基础概念相关推荐

  1. ROS wiki系列|ROS入门基础概念讲解

    上一期我们对ROS wiki中ROS部分进行了着重讲解,回顾戳这 这一期我们主要介绍ROS-getting started部分的一些基本概念 相关wiki页面:http://wiki.ros.org/ ...

  2. 统计学入门基础概念问答(统计学方法的分类、统计数据的分类等)

    1.统计学概念 什么是统计学?(statistics) 统计学是收集.分析.表述和解释数据的科学(不列颠百科全书). 2.统计学方法的分类 描述统计学 (descriptive statistics) ...

  3. 大数据入门 - 基础概念

    文章目录 1. 发展历史 2. 分布式系统 可靠性 可扩展性 可维护性 4. 单机引擎的问题 事务 写入和存储 数据的序列化 3. GFS(Google File System) master 的快速 ...

  4. 深入浅出区块链 #1 入门基础概念辨析

    由公开资料搜集整理和加工形成,仅用于笔记整理,如有侵权联系删除. 区块链理论概述 什么是区块链? Blockchain 是什么?:正在兴起的交易服务平台:使用密码学算法防篡改的账簿:共享帐簿 (Sha ...

  5. 1.基础入门——基础概念

    域名 什么是域名? 又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置).由于IP地址具有不方便记忆并且不能显示 ...

  6. CPU和GPU及CUDA入门基础概念

    CPU与GPU 1 CPU与GPU的关系:smile: 1.1 CPU与GPU各自特点 2 一些零碎的CUDA入门知识:blush: 2.1 函数修饰符 2.2 线程.线程快.线程格 2.3 什么是核 ...

  7. Python爬虫==入门基础概念

    HTTP请求 1.首先需要了解一下http请求,当用户在地址栏中输入网址,发送网络请求的过程是什么? 可以参考我之前学习的时候转载的一篇文章一次完整的HTTP事务过程–超详细 2.还需要了解一下htt ...

  8. postman——入门基础——概念理解

    URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下:schema://host[:port#]/path/.../[?query-string][ ...

  9. 股市入门基础 :基本术语和概念的解读

    文章目录 股市入门基础 :基本术语和概念的解读 1.换手率 2.溢价率 3.市净率 4.市盈率 5.资产负债率 6.实体涨幅 7.现均差 8.委比 9.内盘 10.外盘 11.每股净资产 12.潮汐 ...

最新文章

  1. leetcode 113. 路径总和 II(Path Sum II)
  2. LeetCode 875. 爱吃香蕉的珂珂(二分查找)
  3. (桌面虚拟化最佳实践--呼叫中心系统优化之二)存储和服务器优化项目
  4. mysql安装过程遇到的问题_个人在mysql安装过程中遇见的问题
  5. Linux虚拟文件系统VFS的相关数据结构和操作
  6. vue教程1-03 v-for循环
  7. 企业架构-数据服务总线思路
  8. Python初学系列——天天向上的力量
  9. 私有云的优缺点_私有云的优缺点是什么?与公有云的区别
  10. Java用户注册手机短信验证码校验功能实现
  11. Chrome浏览器显示“Adobe flash player已过期”问题之解决
  12. 报表引擎终于做出来了!!!
  13. 关于win10 链接安卓设备报错winusb.sys未经签名的解决办法
  14. JavaScript摘录(二)
  15. 首选dns服务器地址最快,各地首选dns地址大全【图解】
  16. PowerSyncKM 包尔星克 对拷线无法自动链接windows和统信系统
  17. 如何远程连接另外一台电脑
  18. 病理与病理生理学【5】
  19. 三西格玛和六西格玛区别是什么?优思学院用一幅图告诉你
  20. 基于google云平台实现音频转文字

热门文章

  1. 画瀑布图_道砟石上的庐山瀑布惟妙惟肖
  2. vue的matcher_vue-router工作原理概述和问题分析
  3. soundbar未来发展_智能电视时代 Soundbar未来发展之路
  4. python数据库操作框架_python bottle 框架操作数据库
  5. linux清空在用文件夹,linux清空文件夹命令问题
  6. 操作系统原理_读懂操作系统之缓存原理(cache)(三)
  7. 数学知识巧学JCF(Java Collections framework)
  8. npm install 安装软件,出现 operation not permitted, mkdir 'C:\Program Files\nodejs\node_cache'...
  9. solr7.4.0+mysql+solrj(简而优美)
  10. java split函数报错