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

MixPHP发布v3027支持Swow

MixPHP公布v3.0.27反对Swow更新内容减少Swow反对减少WebSocket,GRPC的swoolecopool过程池反对体验Swow本次更新次要反对了Swow,市面上
文章目录[隐藏]
  • 体验 Swow
  • 对于MixPHP
  • 开箱即用, 灵便组合
  • 官网及交换
MixPHP 公布 v3.0.27 反对 Swow

更新内容

  • 减少 Swow 反对
  • 减少 WebSocket, GRPC 的 swoolecopool 过程池反对

体验 Swow

本次更新次要反对了 Swow, 市面上唯二反对 Swow 的框架

装置

composer create-project --prefer-dist mix/api-skeleton api

运行

还没有装置 Swow 的能够参考文档先装置 Install, Swow 当初还未处于正式版能够先尝鲜体验

php bin/swow.php 
                              ____
 ______ ___ _____ ___   _____  / /_ _____
  / __ `__ \/ /\ \/ /__ / __ \/ __ \/ __ \
 / / / / / / / /\ \/ _ / /_/ / / / / /_/ /
/_/ /_/ /_/_/ /_/\_\  / .___/_/ /_/ .___/
                     /_/         /_/

System    Name:       linux
PHP       Version:    8.0.15
Swow      Version:    0.1.0
Listen    Addr:       http://0.0.0.0:9501
2022-04-16 20:32:00.415403  INFO  Start swow coroutine server

测试 Swow 性能

在性能上是优于 SwooleCoroutine 在将来的性能中也会反对协程Mongo, 多过程协程

wrk -c1000 -t10 http://localhost:9501
Running 10s test @ http://localhost:9501
  10 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    54.09ms    2.97ms 124.98ms   97.74%
    Req/Sec     1.84k   156.88     2.02k    92.32%
  182698 requests in 10.08s, 9.06MB read
  Socket errors: connect 0, read 830, write 0, timeout 0
Requests/sec:  18128.02
Transfer/sec:      0.90MB

体验 Swow-WebSocket

编辑 bin/swow.php while 局部代码就能够

while (true) {
    $request = null;
    try {
        $request = $connection->recvHttpRequest();
        if (($upgrade = $request->getUpgrade()) && $upgrade === $request::UPGRADE_WEBSOCKET) {
            $connection->upgradeToWebSocket($request);
            while (true) {
                $frame = $connection->recvWebSocketFrame();
                $opcode = $frame->getOpcode();
                switch ($opcode) {
                    case WebSocketOpcode::PING:
                        $connection->sendString(WebSocketFrame::PONG);
                        break;
                    case WebSocketOpcode::PONG:
                        break;
                    case WebSocketOpcode::CLOSE:
                        break 2;
                    default:
                        $frame = new WebSocketFrame();
                        $frame->setPayloadData('Hello Swow!');
                        $connection->sendWebSocketFrame($frame);
                }
            }
            break;
        }
        $handler = $this->handler;
        $handler($request, $connection);
    } catch (ResponseException $exception) {
        $connection->error($exception->getCode(), $exception->getMessage());
    }
    if (!$request || !$request->getKeepAlive()) {
        break;
    }
}

链接 WebSocket 发送内容 hello 收到回复 hello Swow! 通过 jmeter 测试 SwowWebSocket的性能也是相当恐怖的

对于MixPHP

MixPHP 是一个 PHP 命令行模式开发框架;基于 Vega 驱动的 HTTP 能够同时反对 Swoole、Swow、WorkerMan、FPM、CLI-Server 生态,并且能够无缝切换。 你能够只应用 mix/vega 来搭配 laravel orm 应用;能够在任意环境中应用 mix/database 和 mix/redis;能够应用 mix/grpc 原生代码编写 gRPC;所有的模块你能够像搭积木一样随便组合。性能强劲在 TechEmpower Benchmark霸榜前十。

开箱即用, 灵便组合

当咱们在本地开发时, 没有装置 Swow/Swoole 能够应用 cli/fpm 本地开发, 上线应用 Swoole/Swow/Workerman 应用框架不必放心底层切换。

反对多种服务器驱动,并且能够无缝切换。

  • PHP Built-in CLI-Server 零扩大依赖 热更新 适宜本机开发
  • PHP-FPM 热更新 适宜共享开发 适宜 admin 开发
  • Swoole 常驻内存 兼容 composer 生态
  • Swoole Coroutine 常驻内存 协程性能强劲
  • Swow 常驻内存 纯协程引擎
  • WorkerMan 常驻内存 兼容 composer 生态

官网及交换

https://github.com/mix-php/mix (点Star反对一下)

https://gitee.com/mix-php/mix (点Star反对一下)

OpenMix技术交换A群: 284806582 (暗号:phper)

OpenMix技术交换A群: 825122875 (暗号:phper)



推荐阅读
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • phpcomposer 那个中文镜像是不是凉了 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • Postgresql备份和恢复的方法及命令行操作步骤
    本文介绍了使用Postgresql进行备份和恢复的方法及命令行操作步骤。通过使用pg_dump命令进行备份,pg_restore命令进行恢复,并设置-h localhost选项,可以完成数据的备份和恢复操作。此外,本文还提供了参考链接以获取更多详细信息。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
手机用户2602913361
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有