millken/ypf

PHP 框架与应用服务器。

3.1.2 2021-01-06 03:46 UTC

README

概述

一个微型的php7框架。在swoole模式下,性能可提升10倍。

该框架主要面向高级PHP程序员,保持对一切的控制。

支持并使用各种PSR

  • PSR-2 (编码标准)
  • PSR-4 (自动加载)
  • PSR-7 (HTTP 消息)
  • PSR-11 (容器接口)
  • PSR-15 (HTTP 中间件)

安装

composer require millken/ypf

需求

  1. PHP 7.2+
  2. Swoole 4.2+ (可选但推荐)

使用

php swoole.php

//swoole.php

require './vendor/autoload.php';
use GuzzleHttp\Psr7\Response;

$router = new Ypf\Route\Router();
$router->map('GET', '/', function ($request) {
    return 'test';
});
$router->map('GET', '/hello/{name}?', function ($request) {
    $name = ucwords($request->getAttribute('name', 'World!'));

    return new Response(200, [], 'hello '.$name);
});

$services = [
    'factory' => Ypf\Application\Swoole::class,

    'swoole' => [
        'server' => [
            'address' => '127.0.0.1',
            'port' => 7000,
        ],
        'options' => [
            'dispatch_mode' => 1,
        ],
    ],
    'middleware' => [
        new Ypf\Route\Middleware($router),
    ],
];

$app = new Ypf\Application($services);

$app->run();

swoole性能

 wrk -t 20 -c 200 -d 30s "http://127.0.0.1:7000/"
Running 30s test @ http://127.0.0.1:7000/
  20 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     2.16ms    1.94ms  40.97ms   88.56%
    Req/Sec     5.50k   521.94    19.49k    86.64%
  3289431 requests in 30.10s, 501.93MB read
Requests/sec: 109285.69
Transfer/sec:     16.68MB

php -S 127.0.0.1:7000 cgi.php #cgi模式

//cgi.php

require './vendor/autoload.php';
use GuzzleHttp\Psr7\Response;

$router = new Ypf\Route\Router();
$router->map('GET', '/', function ($request) {
    return 'test';
});
$router->map('GET', '/hello/{name}?', function ($request) {
    $name = ucwords($request->getAttribute('name', 'World!'));

    return new Response(200, [], 'hello '.$name);
});

$services = [
    'middleware' => [
        new Ypf\Route\Middleware($router),
    ],
];

$app = new Ypf\Application($services);

$app->run();

查看完整的示例

许可证

Apache许可证,版本2.0