[六星教育1911]swoole入门--------基础概念
概念:Swoole是一个为PHP用C和C++编写的基于事件的高性能异步&协程并行网络通信引擎
学习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
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 Swoole\Server("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
- 点赞
- 收藏
- 分享
- 文章举报
- [SQL SERVER BI入门教程]1、安装与基础概念
- RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
- C入门之基础概念(一)
- puppet基础概念入门(01)
- SQL SERVER BI 入门:(1)安装与基础概念
- Nginx模块开发---Nginx开发从入门到精通 读书笔记(二)---Nginx基础概念
- Linux基础入门1--基本概念与操作
- Html与CSS快速入门01-基础概念
- C++ 数据类型、运算符、和表达式 入门基础知识和概念(二)
- osworkflow基础入门部分汇总(基本概念,包用途分析及代码片断,表结构分析,主要优势,核心概念)
- Linux基础入门(第一弹:基本概念)
- 8天入门wpf—— 第一天 基础概念介绍
- 先搞懂这八大基础概念,再谈机器学习入门!
- 先搞懂这八大基础概念,再谈机器学习入门!
- RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
- Java入门-基础概念
- SQL SERVER BI 入门:(1)安装与基础概念
- Hadoop基础入门学习笔记(基本概念)
- mybatis之入门到开发(一)之基础原理概念+入门小程序
- Java基础:初学入门需掌握的30个基本概念