yii2 swoole:让yii2运行在swoole上
运行在swoole上的yii2是运行在php-fpm上yii2的5倍以上,而且一句代码也不用修改。
各个演示站点后台 用户名:feehicms 密码123456
php7.1.8 (php-fpm+nginx+yii2)
php7.1.8 (swoole+nginx+yii2)
以上demo均采取同一docker镜像部署,docker容器运行在同一服务器上,分配相同的资源。
这里用作比较的demo是采用yii2框架开发的一款cms系统FeehiCMS,因为FeehiCMS只开发基础cms功能,未对yii框架做任何封装、改造,故选择此作为体验demo。
使用yii2自带的yii2-debugger,比较后端响应时间。
因yii2使用YII_BEGIN_TIME常量和register_shutdown_function函数实现yii2-debugger,而swoole常住内存,所以此处yii2-swoole复写了这两个组件少数方法。swoole开始时间从onRequest开始算起。
背景 在使用yii2做网站开发时,是鉴于它上手速度快,拥有强大的组件和丰富的类库。以前做过些android系统层、APP、流媒体等,而在接触yii2后发现,这个的开发速度确实快,虽然是个做网站的php框架,没有可比性,不过看了很多博客对比过yii2、laravel、phalcon,yii2的开发速度比后几个能提升几个等级。(话说以后有时间体验下后面两个,看是不是真的~) 废话不多说,进入正题。做网
前言 本篇文章将介绍怎么使用swoole运行yii2 advanced框架。在swoole中正常使用web服务器所支持的一般功能,同时运行了http服务和socket服务。在实践此文章前请先在自己的机器上安装上下面介绍的项目环境。该项目和一般的yii2 advanced一样,只是有3个地方不同。这里只介绍3个重要地方:swoole脚本文件、swoole服务配置文件、yii2 advanced中源码
https://github.com/immusen/yii2-swoole-websocket 示例: 聊天室案例, 示例代码: /websocket/controllers/RoomController.php 发送消息: { "jsonrpc":"2.0", "id":1, "method":"room/msg", "param
我们理解和使用yii2和swoole的过程中,总会有一些疑惑、想法。现在记录下来,整理笔记、知识,并将其中的价值传播给他人,分享知识。 本文将重点介绍: (*注: php 7.1 + swoole 1.9) 1.yii2控制台程序如何应用swoole(tcp服务器) 2.yii2restful程序如何应用swoole (http服务器) 1.yii2 控制台程序应用swoole 在yii2控制台程
yii2-queue a yii2 extension to make simple to use queue. yii2-queue让队列的使用在yii2中变得更轻松,她为各种队列组件的使用提供了一个标准的接口,您只需要配置好需要使用的队列组件,就能轻松使用, 同时您在不同队列组件之间的切换也只需要修改下配置文件,重启下队列监听进程即可,目前支持数据库队列,redis队列,beanstalkd队
平时如果要看异步执行完的日志需要kill调swoole进程然后会将日志记录到我们设置的文件中,但是不想每次都去kill进程,然后再重启进程,这样十分繁琐。 先看yii手册文档: Class yii\log\Logger 所有类 | 属性 | 方法 | 常量 继承 yii\log\Logger » yii\base\Component » yii\base\BaseObject 实现 yii
yii2-websocket 是基于 yii2 实现的 WebSocket 扩展,提供 WebSocket 客户端及 WebSocket 服务端。 底层支持 swoole 及 workerman 驱动。 workerman的 fd 连接号存在问题,目前推荐使用 swoole 驱动。 为什么需要 WebSocket ? WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。 了
安装 swoole 详细的 swoole安装可以参数 swoole官方文档,https://wiki.swoole.com/wiki/page/6.html 安装 cmf-swoole扩展 composer require thinkcmf/cmf-swoole:~5.1.0 启动 swoole cd到程序根目录,执行如下命令: php think swoole swoole启动后会输出如下内
类名: Imi\Util\Swoole Swoole 环境下的一些工具类。 方法 getMasterPID 获取master进程pid echo Swoole::getMasterPID(); getManagerPID 获取manager进程pid echo Swoole::getManagerPID();
Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程、高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等,使 PHP 不再局限于传统的 Web 领域。
Swoole 是一个使用 C++ 语言编写的基于异步事件驱动和协程的并行网络通信引擎,为 PHP 提供协程、高性能网络编程支持。提供了多种通信协议的网络服务器和客户端模块,可以方便快速的实现 TCP/UDP服务、高性能Web、WebSocket服务、物联网、实时通讯、游戏、微服务等,使 PHP 不再局限于传统的 Web 领域。
Swoole Tracker 作为 Swoole 官方出品的一整套企业级 PHP 和 Swoole 分析调试工具,更专一、更专业。 介绍 时刻掌握应用架构模型 自动发现应用依赖拓扑结构和展示,时刻掌握应用的架构模型 分布式跨应用链路追踪 支持无侵入的分布式跨应用链路追踪,让每个请求一目了然,全面支持协程/非协程环境,数据实时可视化 全面分析报告服务状况 各种维度统计服务上报的调用信息, 比如总流量
由于PHP语言不支持多线程,因此Swoole使用多进程模式,在多进程模式下存在进程内存隔离,在工作进程内修改global全局变量和超全局变量时,在其他进程是无效的。 设置worker_num=1时,不存在进程隔离,可以使用全局变量保存数据 $fds = array(); $server->on('connect', function ($server, $fd){ echo "connec