Check out Pux (https://github.com/c9s/Pux), che è mirato a prestazioni estremamente elevate, zero dipendenza, overhead (con supporto estensione C). e una buona prestazione, Pux fornisce anche un'API Sinatra-come per voi per definire i propri percorsi di routing:
$mux = new Pux\Mux;
$mux->any('/product', ['ProductController','listAction']);
$mux->get('/product/:id', ['ProductController','itemAction'] , [
'require' => [ 'id' => '\d+', ],
'default' => [ 'id' => '1', ]
]);
$mux->post('/product/:id', ['ProductController','updateAction'] , [
'require' => [ 'id' => '\d+', ],
'default' => [ 'id' => '1', ]
]);
$mux->delete('/product/:id', ['ProductController','deleteAction'] , [
'require' => [ 'id' => '\d+', ],
'default' => [ 'id' => '1', ]
]);
$route = $mux->dispatch('/product/1');
Il risultato del benchmark:
- 48.5x più veloce di "Symfony/routing" in statica instradamento delle rotte. (con estensione pux installata)
- 31x più veloce di "symfony/routing" nella distribuzione di espressioni regolari. (con estensione pux installata)
- 69 volte più veloce di "klein" (con estensione pux installata).
n=10000
Runing php array - . 138796.45654569/s
Runing pux - . 124982.98519026/s
Runing klein - . 1801.5070399717/s
Runing ham - . 13566.734991391/s
Runing aura - . 39657.986477172/s
Runing symfony/routing - . 1934.2415677861/s
Rate Mem php array pux aura ham symfony/routing klein
php array 138.8K/s 0B ---90% -28% -9% -1% -1%
pux 124.98K/s 0B 111% -- -31%-10% -1% -1%
aura 39.66K/s 0B 349%315% ---34% -4% -4%
ham 13.57K/s 0B 1023%921% 292% -- -14% -13%
symfony/routing 1.93K/s 786K 7175%6461%2050%701% -- -93%
klein 1.8K/s 262K 7704%6937%2201%753% 107% --
================================== Bar Chart ==================================
php array 138.8K/s | ████████████████████████████████████████████████████████████ |
pux 124.98K/s | ██████████████████████████████████████████████████████ |
aura 39.66K/s | █████████████████ |
ham 13.57K/s | █████ |
symfony/routing 1.93K/s | |
klein 1.8K/s | |
============================== System Information ==============================
PHP Version: 5.5.6
CPU Brand String: Intel(R) Core(TM) i5-3427U CPU @ 1.80GHz
With XDebug Extension.
Pux cerca di non consumare tempo di calcolo per costruire tutte le rotte in modo dinamico (come Symfony/Routing). Invece, Pux compila i tuoi percorsi su un semplice array PHP per il caching, i percorsi compilati possono essere caricati dalla cache molto velocemente.
Con il supporto per estensione PHP Pux, è possibile caricare e inviare i percorsi 1,5 ~ 2 volte più velocemente rispetto a Pux PHP puro.
Slim non viene templating, è un componente aggiuntivo. Consiglio vivamente Slim se tutto ciò che desideri è il routing semplice – Luke
Questa domanda chiusa è molto utile. Hai trovato quello buono. Sono dello stesso interesse qui. –