2013-03-09 13 views
7

Sto lavorando su un non così grande progetto (3 pacchi che ho creato e 6 Ho scaricato/5 Enti) e mi hanno posto questo codice sul mio regolatore di casa:Symfony2 tempo di caricamento e le prestazioni

class HomeController extends Controller 
{ 
    public function indexAction() 
    { 
     $time = microtime(true) - $_SERVER["REQUEST_TIME_FLOAT"]; 
     echo $time; 
     die(); 

     //... 

Sta dando me sotto 100 ms sul localhost (con APC abilitato) che va bene.

Il vero problema è il comportamento sul server online (utilizzando prod ENV e APC non installato): Se non utilizzare il Sito per come 10 minuti, la prima volta è veramente lento da caricare (2 a 4 secondi) e quindi se rimango sul sito Web, se aggiorno la pagina, è molto più veloce (da 500ms a 1s).

È normale? C'è qualcosa di sbagliato nel mio server online o nel mio progetto symfony2?

+3

Probabilmente un lungo tiro, ma ti capita di avere xdebug abilitato? Ha un enorme impatto sulle prestazioni. – gilden

+0

Io no. Ma prima di provare qualcosa di simile, vorrei sapere se questi valori sono normali o no? – httpete

+2

Certamente non sono normali, se stai lavorando su hardware decente e l'ambiente è pungente. – gilden

risposta

2

È consigliabile impostare APC in modo definitivo per ridurre il tempo di caricamento. Ecco una nota su questo:

Performance

(2015 edit: collegamento aggiornato)

+0

Dato che c'è una grande differenza tra la versione locale e quella online, non pensi che provenga dalla mia configurazione symfony2, dalla mia connessione al database ... e non dall'esecuzione di PHP? – httpete

+0

Dipende da quale versione PHP si utilizza su env locale/remoto e anche sul sistema operativo. – apoq

+0

Ho provato a eseguire il progetto sul mio MAC con MAMP e APC abilitato (ho anche provato xCache) ... e ottengo ~ 30ms invece di ~ 300ms! Questo è sorprendentemente più veloce, grazie! Ma ... visto che non posso avere abilitato APC sul mio server online, sto ancora cercando modi per migliorarlo. – httpete

2

Basta dare un'occhiata alla scheda Timeline della grande barra degli strumenti/profiler che Symfony fornisce: http://symfony.com/blog/new-in-symfony-2-2-new-stopwatch-component (non limitato a 2.2)

Si sta utilizzando localhost come database_host? Se è così, prova invece 127.0.0.1!

Stai accedendo a un'API di terze parti come Facebook (FOSUserBundle)?

+0

Sto usando Symfony v2.0.9 quindi sono in grado di installare il componente? Sto usando 127.0.0.1 e FOSUserBundle. – httpete

+0

La barra degli strumenti è sicuramente disponibile per 2.0.9: https://github.com/symfony/symfony-standard/blob/v2.0.9/app/config/config_dev.yml # L9 Che ne dici di aggiornare la versione di Symfony? Hai fatto progressi sul tempo di rendering? – hacfi

+0

Ho installato il componente Cronometro usando il compositore ma non c'è nulla di nuovo nel mio profilo web ... Se mai dovessi farlo funzionare, sarà in grado di fornire informazioni prima dell'esecuzione del primo controller? (vedere la domanda sul mio codice) – httpete

Problemi correlati