hero

QueryPHP

高性能 PHP 渐进式协程框架引擎.

设计理念指南 →

QueryPHP 是一款现代化的高性能 PHP 渐进式协程框架, 我们还是主要面向传统 PHP-FPM 场景,以工程师用户体验为历史使命,让每一个 PHP 应用都有一个好框架。
百分之百单元测试覆盖直面 Bug,我们一直致力于创造高品质的产品 level level leevel,依托 Swoole 协程提升业务性能,此刻未来逐步渐进。我们的愿景是 USE LEEVEL WITH SWOOLE DO BETTER,让您的业务撑起更多的用户服务。
安装
composer create-project hunzhiwange/queryphp myapp dev-master
php leevel server <Visite http://127.0.0.1:9527/>
HTTP Server
php leevel http:server # php leevel http:server -d
php leevel http:reload
php leevel http:stop
php leevel http:status
WebSocket Server
php leevel websocket:server # php leevel websocket:server -d
php leevel websocket:reload
php leevel websocket:stop
php leevel websocket:status
Go RoadRunner
/data/server/roadrunner-1.3.5-darwin-amd64/rr serve -d -v # -d = debug
/data/server/roadrunner-1.3.5-darwin-amd64/rr http:reset
/data/server/roadrunner-1.3.5-darwin-amd64/rr http:workers -i
MySQL Coroutine
<?php

declare(strict_types=1);

namespace App\App\Controller\Coroutine;

use App;

class Database
{
    public function handle(): string
    {
        go(function () {
            for ($i = 0; $i < 5; $i++) {
                go(function () {
                    // .env DATABASE_DRIVER = mysql or mysqlPool.
                    $result = App::make('database')->query('SELECT sleep(2)');
                    dump($result);
                });
            }
        });

        return 'Done';
    }
}
Redis Coroutine Channel
<?php

declare(strict_types=1);

namespace App\App\Controller\Coroutine;

use App;
use Swoole\Coroutine\Channel;

class Redis
{
    public function handle(): string
    {
        go(function () {
            $time = time();
            $chan = new Channel();

            for ($i = 0; $i < 5; $i++) {
                go(function () use ($chan, $i) {
                    // .env CACHE_DRIVER = redis or redisPool.
                    App::make('cache')->set('h'.$i, 'w');
                    $result = App::make('cache')->get('h'.$i);
                    $chan->push($result);
                    sleep(1);
                });
            }

            for ($i = 0; $i < 5; $i++) {
                $result = $chan->pop();
                dump($result);
            }

            dump('Time: '.(time() - $time));
        });

        return 'Done';
    }
}
Coroutine WaitGroup
<?php

declare(strict_types=1);

namespace App\App\Controller\Coroutine;

use Swoole\Coroutine\WaitGroup;

class WaitGroup
{
    public function handle(): string
    {
        go(function () {
            $result = [];
            $time = time();
            $wg = new WaitGroup();

            $wg->add();
            go(function () use ($wg, &$result) {
                $result['k1'] = 'coroutine 1';
                sleep(1);
                $wg->done();
            });

            $wg->add();
            go(function () use ($wg, &$result) {
                $result['k2'] = 'coroutine 2';
                sleep(2);
                $wg->done();
            });

            $wg->wait();

            foreach ($result as $k => $v) {
                dump($k);
                dump($v);
            }

            dump('Time: '.(time() - $time));
        });

        return 'Done';
    }
}

Query the endless software world

is complex enough

探寻无尽的软件世界

已足够复杂

But yet

This is not what we want

这不是

我们想要的

We just want to write code

simply and happily

我们只想简单快乐

左手代码右手年华

框架理念

值得托付的使命感,让每一个 PHP 应用都有一个好框架。

组件系统

框架底层由独立的高内聚低耦合组件构成,可以轻松无侵入接入现有系统。

路由系统

框架提供 MVC 自动路由并能够智能解析 Restful 请求和基于 OpenApi 3.0 规范的 swagger-php 注解路由,文档路由一步搞定。

整体解决方案

框架提供了从缓存、Session、IOC 容器、模板引擎、Ddd ORM 等大量开箱即用的功能,提供了基于 Symfony Console 命令行工具集。

框架核心常驻

我们基于 Zephir 开发整个系统核心组件的 C 扩展版本,与 PHP 功能完全一致,无需修改任何代码即可性能加倍。

业务协程化

基于 Swoole 4 提供的全新协程编程模式让业务性能更好,我们的愿景是少量代码修改或者无修改,让你的业务撑起更多的用户服务。

注意

请确保你的 PHP 版本 >= 7.3.2。