millken / ypf
PHP 框架与应用服务器。
3.1.2
2021-01-06 03:46 UTC
Requires
- php: >=7.2.0
- guzzlehttp/psr7: ^1.4
- psr/container: ^1.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.0
- psr/simple-cache: ^1.0
Requires (Dev)
- lawoole/swoole: dev-master
Suggests
- ext-swoole: swoole extension
- ext-yac: shared memory cache extension
- dragonmantank/cron-expression: support cron worker
README
概述
一个微型的php7框架。在swoole模式下,性能可提升10倍。
该框架主要面向高级PHP程序员,保持对一切的控制。
支持并使用各种PSR
- PSR-2 (编码标准)
- PSR-4 (自动加载)
- PSR-7 (HTTP 消息)
- PSR-11 (容器接口)
- PSR-15 (HTTP 中间件)
安装
composer require millken/ypf
需求
- PHP 7.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();
查看完整的示例