php 快速路由,Route - 一个快速的 PHP 路由实现

Route - A fast route implemented by php

68747470733a2f2f7374796c6563692e696f2f7265706f732f38343037393635372f736869656c643f6272616e63683d6d617374657268747470733a2f2f7472617669732d63692e6f72672f7a71686f6e672f726f7574652e7376673f6272616e63683d6d617374657268747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f7a71686f6e672f726f7574652f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572

zqhong/route is inspred by nikic/FastRoute. But it is faster than FastRoute.

Install

$ composer require -vvv "zqhong/route:dev-master"

Example

use zqhong\route\Helpers\Arr;

use zqhong\route\RouteCollector;

use zqhong\route\RouteDispatcher;

require dirname(__DIR__) . "/vendor/autoload.php";

function getUser($uid)

{

echo "Your uid: " . $uid;

}

/** @var RouteDispatcher $routeDispatcher */

$routeDispatcher = dispatcher(function (RouteCollector $r) {

$r->addRoute('GET', '/user/{id:\d+}', 'getUser');

});

$httpMethod = 'GET';

$uri = '/user/1';

$routeInfo = $routeDispatcher->dispatch($httpMethod, $uri);

if (Arr::getValue($routeInfo, 'isFound')) {

$handler = Arr::getValue($routeInfo, 'handler');

$params = Arr::getValue($routeInfo, 'params');

call_user_func_array($handler, $params);

} else {

echo '404 NOT FOUND';

}

Using CURL send request:

// return 404 NOT FOUND

$ curl http://example.com/?r=ops

// return Your uid: 1

$ curl http://example.com/?=/user/1

Benchmark

Environment

OS:Ubuntu 16.04 LTS(Vultr 4Cores 8G memory)

PHP:7.0.4

Apache:2.4.18

Result

34a999481ea804024988594ff93e5794.png

nikic_route(v1.2)

Requests per second: 3527.98 [#/sec] (mean)

symfony route(v3.2)

Requests per second: 5193.17 [#/sec] (mean)

zqhong route(dev-master)

Requests per second: 5923.56 [#/sec] (mean)

Benchmark test code and result in benchmark folder.

Document

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值