V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
huangzhhui
V2EX  ›  PHP

Zend 官方框架增加 Swoole 协程支持 !

  •  
  •   huangzhhui · 2018-09-27 17:30:01 +08:00 · 2056 次点击
    这是一个创建于 2257 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    Zend FrameworkPHP 的官方框架,随着 Zend-Expressive-Swoole 0.2.2 的发布,率先支持了 Swoole 4 的协程功能,现在可以仅通过一个配置即可使整个应用以协程模式运行,完美解决了从前的笨重低性能的印象,基于 Zend Expressive 完美解耦的设计,搭建一个高性能的符合自己心意的框架完全不在话下了!

    通过 Zend Expressive 搭建一个我喜欢的框架

    只需执行 composer create-project zendframework/zend-expressive-skeleton folder_name 通过 Composer 就可以进入组件安装的流程了,folder_name 改成你想要存放的文件夹名字

    clipboard.png

    从上面的图片可以看到安装器会询问你好几个问题,也就是让你选择你想要的组件,理论上支持所有符合 PSR 规范 的组件。

    1.你想使用哪个路由?
    [1] Aura.Router
    [2] FastRoute
    [3] Zend Router

    2.你想使用哪个依赖注入容器?
    [1] Aura.Di
    [2] Pimple
    [3] Zend ServiceManager

    3.你想使用哪个模板引擎?
    [1] Plates
    [2] Twig
    [3] Zend View
    [n] 不使用

    4.你想使用哪个错误处理器?
    [1] Whoops
    [n] 不使用

    做完选择之后安装器会根据你的需求自动安装完相关的依赖,一个框架的基础就这么搭完了,整个流程极其的简单,最简单没有之一。

    使用 Zend-Expressive-Swoole

    那么要如何让 Zend Expressive 运行在 Swoole 上呢,服务器要安装 Swoole 4 以上的扩展就不在这多做解释了(注意要启用mysqlnd才能使PDO协程化),而对于 Zend 只需要通过 Composer 安装 Zend-Expressive-Swoole 组件即可,执行 composer require zendframework/zend-expressive-swoole,然后在项目内增加一个配置文件 config/autoload/swoole.local.php,并按以下内容配置

    use Zend\Expressive\Swoole\ConfigProvider;
    
    return array_merge((new ConfigProvider())(), [
        'zend-expressive-swoole' => [
            'swoole-http-server' => [
                'host' => '0.0.0.0',
                'port' => 80, // 端口
                'options' => [
                    'enable_coroutine' => true, // 协程配置开关
                ],
            ],
        ],
    ]);
    

    配置也很简单,就这么完了,现在只需要在命令行执行 php public/index.php start 即可以以协程模式在 Swoole 上运行你的 Zend 框架了。

    结语

    考虑到 Zend 在国内的流行度并不高,可能帮不了国内的多少开发者,本文只为做一个引导,有兴趣的可以直接查看官方文档获得更多信息,同时 Zend-Expressive-Swoole 还自行实现了 HTTP 更好支持度的静态资源访问支持,有兴趣的也可以了解一下。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   919 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.