首页 php框架 Swoole php有必要用swoole吗

php有必要用swoole吗

Dec 02, 2019 pm 01:36 PM
swoole

php有必要用swoole吗

在 Swoole 官网的自我介绍是“面向生产环境的 PHP 异步网络通信引擎”,首先 Swoole 它是一个网络应用的开发工具,它支持 Http、TCP、UDP、WebSocket。            (推荐学习: swoole视频教程

Swoole 和我们传统的 PHP 开发差别是有的,需要理解的概念也是有的。使用目前一些基于 Swoole 的框架开发的话,从开发习惯上和传统的TP、LV 框架相差不多。

那为什么要使用 Swoole?

我认为有以下几点:

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

协程异步,提高对 I/O 密集型场景并发处理能力(如:微信开发、支付、登录等)

方便地开发 Http、WebSocket、TCP、UDP 等应用,可以与硬件通信

PHP 高性能微服务架构成为现实

常驻内存

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

协程

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

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

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

协程代码示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

<?php

use Swoole\Coroutine as co;

   

// 协程

$time = microtime(true);

// 创建10个协程

for($i = 0; $i < 10; ++$i)

{

    // 创建协程

    go(function() use($i){

        co::sleep(1.0); // 模拟请求接口、读写文件等I/O

        echo $i, PHP_EOL;

    });

}

swoole_event_wait();

echo 'co time:', microtime(true) - $time, ' s', PHP_EOL;

   

// 同步

$time = microtime(true);

// 创建10个协程

for($i = 0; $i < 10; ++$i)

{

    sleep(1); // 模拟请求接口、读写文件等I/O

    echo $i, PHP_EOL;

}

echo 'sync time:', microtime(true) - $time, ' s', PHP_EOL;

登录后复制

以上是php有必要用swoole吗的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

swoole和workerman哪个好 swoole和workerman哪个好 Apr 09, 2024 pm 07:00 PM

swoole和workerman哪个好

如何使用Swoole实现高性能的HTTP反向代理服务器 如何使用Swoole实现高性能的HTTP反向代理服务器 Nov 07, 2023 am 08:18 AM

如何使用Swoole实现高性能的HTTP反向代理服务器

swoole_process 怎么让用户切换 swoole_process 怎么让用户切换 Apr 09, 2024 pm 06:21 PM

swoole_process 怎么让用户切换

swoole协程如何在laravel中使用 swoole协程如何在laravel中使用 Apr 09, 2024 pm 06:48 PM

swoole协程如何在laravel中使用

swoole框架怎么重启服务 swoole框架怎么重启服务 Apr 09, 2024 pm 06:15 PM

swoole框架怎么重启服务

swoole和java哪个性能好 swoole和java哪个性能好 Apr 09, 2024 pm 07:03 PM

swoole和java哪个性能好

Swoole进阶:如何优化服务器的CPU利用率 Swoole进阶:如何优化服务器的CPU利用率 Nov 07, 2023 pm 12:27 PM

Swoole进阶:如何优化服务器的CPU利用率

Swoole实战:如何使用协程进行并发任务处理 Swoole实战:如何使用协程进行并发任务处理 Nov 07, 2023 pm 02:55 PM

Swoole实战:如何使用协程进行并发任务处理

See all articles