PHPackages                             huangzhen/swoole-yii2 - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. huangzhen/swoole-yii2

ActiveLibrary[Framework](/categories/framework)

huangzhen/swoole-yii2
=====================

v0.1.9(4y ago)13PHPPHP &gt;=7.0.0

Since Mar 15Pushed 4y ago1 watchersCompare

[ Source](https://github.com/huangZhen-sh/swoole-yii2)[ Packagist](https://packagist.org/packages/huangzhen/swoole-yii2)[ RSS](/packages/huangzhen-swoole-yii2/feed)WikiDiscussions master Synced 3d ago

READMEChangelogDependencies (9)Versions (2)Used By (0)

swoole-yii2
===========

[](#swoole-yii2)

项目说明
----

[](#项目说明)

公司有一些项目使用Yii2进行开发, 跑在php-fpm模式下, 高并发下的性能问题很严重. 上了apc等opcode cache后也没能很好解决这些问题, 于是尝试用swoole来解决.

在这个项目前, 已经尝试过使用

Blink的优点在于简单, 缺点也在于太简单. 如果是新项目, 并且需求清晰是只用于接口的话, 使用Blink会更好.

如果是继续使用Yii2这类全栈框架, 并希望有明显的性能提升, 可以尝试使用本项目来实现.

本项目目前还是在试验项目, 请谨慎在正式环境中使用.

如果对项目有任何建议, 或者使用过程中遇到问题, 可以发issue给我.

项目的意义
-----

[](#项目的意义)

对现在的Web项目来说, 特别是对PHP项目来说, 遇到性能问题, 第一时间想到的解决方案就是加机器.

不是说加机器不能解决问题, 如果问题是多点部署可以解决的话, 加机器也是一个很粗暴和容易实现的方案.

只是我认为, 加机器这种途径, 是属于运维范畴的解决方法. 对于开发者来说, 依然需要想办法来提升代码质量和效率.

适用人群
----

[](#适用人群)

首先使用者应该对swoole有一定理解. 建议使用本项目前, 先将  中的说明阅读一次.

其次, 对于Yii2的核心概念和实现, 也应该有一定掌握.

已经完成的工作
-------

[](#已经完成的工作)

- Http Server 的实现
- Request 组件的兼容处理
- Response 组件的兼容处理
- Session 组件的兼容处理
- 增加异步任务助手类
- Debug 模块的兼容处理
- Container 支持实例持久化
- Db 组件的自动重连
- 压力测试文档

进行中的工作
------

[](#进行中的工作)

- swoole 任务投递的优化
- 增加单元测试
- swoole 管理脚本的完善

使用方法
----

[](#使用方法)

首先执行 `composer require tourze/swoole-yii2`

下面的配置描述, 基本上就是基于  这个官方 DEMO 来说明的. 建议在阅读前先大概了解下这个项目.

### console配置

[](#console配置)

swoole 的实现, 全部都是基于 CLI 的, 项目的所有管理相关也是使用CLI实现的.

这里第一步我们应该先配置好一个 Yii2 的 console 服务.

在 `console/config/main.php` 中加入类似以下的代码:

```
    'id' => 'app-console',
    'controllerNamespace' => 'console\controllers',
    'controllerMap' => [
        // 在下面指定定义command控制器
        'swoole' => \tourze\swoole\yii2\commands\SwooleController::className(),
    ],

```

此时执行 `./yii`, 应该可以在底部看到 swoole 相关命令.

### frontend/backend配置

[](#frontendbackend配置)

我们建议 frontend 部分使用 swoole 来运行, backend 部分依然使用已有的 php-fpm 模式来运行.

使用本项目, frontend 和 backend 的运行方式会有所变更.

在以前的方式中, 我们会在入口文件 include 所有配置, 然后 new Application 使系统运行起来. 在现在的新方式中, 我们的配置会在服务运行起来时就加载到内存, 节省了上面加载配置的时间.

我们需要在 `console/config/params.php` 中加入类似以下的代码:

```
