IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> 【Swoole】(一)初相识 -> 正文阅读

[PHP知识库]【Swoole】(一)初相识


Swoole 是什么?

Swoole不是一个像Zend Framework、CakePHP、Yii、symfony、ThinkPHP等一样的框架,也不是一个像WordPress、Drupal、Discuz、UChome等开源产品看齐的项目。 Swoole的目标是向Java框架、Ruby On Rails、Python DjangoPylons等一流框架发起挑战。

Swoole虽然是标准的PHP扩展,实际上与普通的扩展不同。普通的扩展只是提供一个库函数。而Swoole扩展在运行后会接管PHP的控制权,进入事件循环。当IO事件发生后底层会自动回调指定的PHP函数。

Swoole 使 PHP 开发人员可以编写高性能高并发的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服务,让 PHP 不再局限于 Web 领域。Swoole4 协程的成熟将 PHP 带入了前所未有的时期, 为性能的提升提供了独一无二的可能性。Swoole 可以广泛应用于互联网、移动通信、云计算、 网络游戏、物联网(IOT)、车联网、智能家居等领域。使用 PHP + Swoole 可以使企业 IT 研发团队的效率大大提升,更加专注于开发创新产品。


Swoole 特性(即 Swoole可以做些什么)

Swoole 使用 C/C++ 语言编写,提供了 PHP 语言的异步多线程服务器、异步 TCP/UDP 网络客户端、异步 MySQL、异步 Redis、数据库连接池、AsyncTask、消息队列、毫秒定时器、异步文件读写、异步DNS查询。 Swoole内置了Http/WebSocket服务器端/客户端、Http2.0服务器端。

除了异步 IO 的支持之外,Swoole 为 PHP 多进程的模式设计了多个并发数据结构和IPC通信机制,可以大大 简化多进程并发编程的工作。其中包括了并发原子计数器、并发 HashTable、Channel、Lock、进程间通信IPC 等丰富的功能特性。

Swoole4.0 支持了类似 Go 语言的协程,可以使用完全同步的代码实现异步程序。PHP 代码无需额外增加任何 关键词,底层自动进行协程调度,实现异步IO。

为什么要使用Swoole?

PHP没有像Python的Twisted、Tornado,Java的Netty、Mina,JavaScript的Node.js框架,它无法实现异步网络通信程序。而Swoole扩展就是为了弥补这个缺陷而诞生的开源项目。

Swoole作为PHP的扩展,其核心目的是为了解决PHP在实现Server服务器开发中遇到的一系列问题,这些问题源于PHP自身执行效率上。所以在服务器开发中,一般不会使用PHP来解决问题,所以才有了Swoole重新定义了PHP的说法。

  • 常驻内存,避免重复再带来的性能损耗,提升海量性能。

传统的PHP框架,在每次处理请求时,都要做一遍加载框架文件、配置等操作。这可能已经成为性能问题的一大原因,而使用Swoole则没有这个问题,它可以一次加载多次使用。

  • 协程异步,提高对I/O密集型场景并发处理能力。

说到协程就必须先说说进程和线程,众所周知,进程是很占用资源的,为了处理请求大量创建进程肯定是得不偿失的。而多线程应用就比较多了,在CPU层面有几个核心就会执行几个任务,线程一旦创建就多了,自然会存在线程调度的损耗。

而协程是在单线程基础上实现的,可以最大限度利用CPU资源,而不会在I/O等待时白白浪费CPU。当然协程越多占用的内存也就越多,不过这个是可以接收的。相比进程和线程,占用的资源是相对比较少的。

使用协程时,如果遇到文件读写、请求接口等场景,会自动挂起协程,把CPU让给其它协程执行任务,这样可以提升单线程的CPU资源利用率,减少浪费从而提高性能。

  • 方便地开发HTTP、TCP、UDP、WebSocket等应用,可以与硬件通信。
  • PHP高性能微服务架构


环境依赖

仅支持 Linux、FreeBSD、MacOS 三种操作系统

在Windows平台,可使用CygWin或WSL(Windows Subsystem for Linux)

Linux 内核版本 2.3.32 以上

gcc-4.8或更高版本,依赖C++11

编译为 libswoole.so 作为 C/C++ 库时需要使用 cmake-2.4 或更高版本

建议使用 Ubuntu14、CentOS7 或更高版本的操作系统

低版本系统(如CentOS 6)可以使用RedHat提供的devtools编译

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-07-28 07:27:14  更:2021-07-28 07:28:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 1:38:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码