热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Swoole内置功能

开发辅助工具Swoole4.X速查表:https:toxmc.github.ioswoole-cs.github.ioide提示工具:https:g
开发辅助工具

Swoole 4.X速查表:https://toxmc.github.io/swoole-cs.github.io/

ide提示工具:https://github.com/swoole/ide-helper

这2个工具挺实用的,截图如下:
在这里插入图片描述

Swoole内置功能

Swoole 是使用 C 和 C++ 语言编写的PHP扩展, 内置了异步非阻塞、多线程的网络IO服务器,PHP程序员仅需处理事件回调即可,无需关心底层。
在这里插入图片描述
与大家熟知的 Workerman 框架不同,Swoole更像是一个基础库给了开发者一把无比锋利的宝剑,可以按照自己想要的方法去使用。

Swoole绝大部分功能都只能运行在 CLI 模式下,也正因为此开发者可以完全的掌控Server的一切,与传统的 php-fpm 模式不同,Swoole需要开发者自行接管各种相关事件,和管理变量的生命周期等。

与传统Web开发的区别

我们知道 php-fpm 是 fast-cgi 运行模式的进程管理器,当启动Server时 php-fpm 会预创建若干个 fast-cgi 处理进程;

每当请求到达 Nginx 时 Nginx 检查到请求的是.php文件时,就将请求转发给 php-fpm Server 然后由 php-fpm 交给某个空闲的进程处理,当处理完成后由 php-fpm 返回给 Nginx 然后由 Nginx 响应给用户。

传统PHP开发者几乎无需关注这其中发生的过程甚至根本不了解,正所谓成也萧何败萧何,一方面虽然降低了开发者入门的门槛但另一方面也使得大量的PHP开发者几乎不了解也不懂的真正的服务端开发。

而 SwooleServer 则是相当于取代了 php-fpm 作为管理器的位置, 由于Swoole 是运行在 CLI 模式下, 所以可以常驻运行和以守护进程运行, 但也正因为如此,也需要开发者自行处理变量的销毁及各种异常和超时的处理。

Swoole 做了什么

Swoole 是 php 的一个扩展,但是他又不是普通的扩展,其最明显的特点就是:一但运行后就会接管PHP的控制权,进入事件循环。 当某种IO事件发生时, Swoole 会回调开发者设置的指定PHP函数。

也就是说 SwooleServer 更像是一个用 C 语言封装好的一个 Tcp/Udp 支持 多线程, EventLoop,事件驱动,异步 等功能的框架。开发者不需要关心底层的各种实现,直接的在业务层面进行开发即可。

什么是IO事件

很多 php 程序员没有使用过其他语言开发Server,也不太了解除了php-fpm以外运行模式的php程序,初次使用Swoole时总是会有各种摸不到头脑的事情。其实IO我们经常提起如: 磁盘IO ,网络IO 在这里Swoole所指的IO事件实际上是指 网络IO 事件。

在日常生活中你留下了一个邮箱,当有人给你发送邮件的时候,你就会收到邮件提醒;

而对于你而言,你并不关心邮件是如何送达的,你只关心你有没有收到邮件,当你收到邮件之后会根据邮件的内容和发送人去做各种各样的处理。

在这个比喻中,Swoole就承担了底层网络事件的监听及各种底层事件处理,当收到邮件(请求)时,会触发收件(接收)提醒,然后将控制权转交给你(预先注册的事件回调函数),来进行后续的处理。

Swoole 的运行流程

在这里插入图片描述
在这里插入图片描述


推荐阅读
  • 使用Swoole的时候出现以下问题,如何解决呢?不是太懂,希望高手们能帮帮忙!谢谢了!是运行https://github.com/matyhtf/webim里的开源项目:matyh ... [详细]
  • MixPHP V2.1:从多进程架构转向单线程协程的深层原因与技术解析 ... [详细]
  • Spring Cloud Config 使用 Vault 作为配置存储
    本文探讨了如何在Spring Cloud Config中集成HashiCorp Vault作为配置存储解决方案,基于Spring Cloud Hoxton.RELEASE及Spring Boot 2.2.1.RELEASE版本。文章还提供了详细的配置示例和实践建议。 ... [详细]
  • OBS (Open Broadcaster Software) 架构解析
    本文介绍 OBS(Open Broadcaster Software),一款专为直播设计的开源软件。文章将详细探讨其技术架构、核心组件及其开发环境要求。 ... [详细]
  • Windows 环境下安装 Git 并连接 GitHub 的详细步骤
    本文详细介绍了如何在 Windows 系统中安装 Git 工具,并通过配置 SSH 密钥实现与 GitHub 的安全连接。包括下载、安装、环境配置及验证连接等关键步骤。 ... [详细]
  • Microsoft即将发布WPF/E的CTP(Community Technology Preview)和SDK,标志着RIA(Rich Internet Application)技术的新里程碑。更多详情及下载链接请参见MSDN官方页面。 ... [详细]
  • 闭包函数,即匿名函数,在PHP中通过Closure类表示。本文将探讨如何访问闭包内的static、this及parameter等关键属性。 ... [详细]
  • 1、字符型常量字符型常量指单个字符,是用一对单引号及其所括起来的字符表示。例如:‘A’、‘a’、‘0’、’$‘等都是字符型常量。C语言的字符使用的就是 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • LCUI 2.1.0 版本现已推出,这是一个用 C 语言编写的图形用户界面开发库,适合创建轻量级的桌面应用程序。此次更新包括多项修复和功能增强,并正式宣布将启动 Android 支持的开发计划。 ... [详细]
  • 本文将指导您如何在Docker环境中高效地搜索、下载Redis镜像,并通过指定或不指定配置文件的方式启动Redis容器。同时,还将介绍如何使用redis-cli工具连接到您的Redis实例。 ... [详细]
  • MySQL性能测试标准倡议:老叶提出的压测基准
    进行MySQL的压力测试通常是为了评估新旧版本之间的性能差异、验证硬件升级的效果、测试参数调整的影响以及评估新业务的负载承受能力。老叶提出了一个MySQL压力测试基准值倡议,旨在促进行业内的标准化和成果共享。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
author-avatar
卖火柴的萌小猪_966
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有