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 命令列工具集。

高品質

百分之百單元測試覆蓋直面 Bug,致力於創造高品質產品 Level Level Leevel。

業務協程化

基於 Swoole 4 提供的全新協程程式設計模式讓業務效能更好,我們的願景是少量程式碼修改或者無修改,讓你的業務撐起更多的用戶服務。

注意

請確保你的 PHP 版本 >= 7.4.0。