2013-03-09 13 views
7

ich auf einem nicht so großen Projekt arbeite (3 Bündel I erstellt und 6 I heruntergeladen/5 Entities), und ich habe diesen Code auf meinem Heim-Controller gelegt:Symfony2 Ladezeit und Leistung

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

     //... 

Es gibt Ich unter 100ms auf dem localhost (mit APC aktiviert), was in Ordnung ist.

Das eigentliche Problem ist das Verhalten auf dem Online-Server (prod env und APC nicht installiert wird): Wenn ich wie 10 Minuten auf die Website nicht verwenden, das erste Mal, es ist wirklich langsam zu laden (2 bis 4 Sekunden) und dann, wenn ich auf der Website bleiben, wenn ich die Seite aktualisieren, ist es viel schneller (von 500ms bis 1s).

Ist das normal? Ist etwas mit meinem Online-Server oder meinem symfony2-Projekt nicht in Ordnung?

+3

Wahrscheinlich eine lange Geschichte, aber haben Sie zufällig xdebug aktiviert? Es hat einen großen Einfluss auf die Leistung. – gilden

+0

Ich nicht. Aber bevor ich etwas versuche, würde ich gerne wissen, ob diese Werte normal sind oder nicht? – httpete

+2

Sie sind sicherlich nicht normal, wenn Sie auf anständige Hardware laufen und die Umwelt ist prod. – gilden

Antwort

2

Sie sollten APC unbedingt einrichten, um die Ladezeit zu verringern. Hier ist ein Hinweis auf, dass:

Performance

(2015 edit: Link aktualisiert)

+0

Da es einen ziemlich großen Unterschied zwischen der lokalen und der Online-Version gibt, glauben Sie nicht, dass es aus meiner Symfony2-Konfiguration, meiner Datenbankverbindung und nicht aus der Ausführung von PHP kommt? – httpete

+0

Hängt davon ab, welche PHP-Version Sie auf dem lokalen/Remote-Env und OS auch verwenden. – apoq

+0

Ich habe versucht, das Projekt auf meinem MAC mit MAMP und APC aktiviert (ich habe auch versucht xCache) ... und ich bekomme ~ 30ms statt ~ 300ms! Das ist überraschend schneller, danke! Aber ... Da ich APC auf meinem Online-Server nicht aktivieren kann, suche ich immer noch nach Möglichkeiten, dies zu verbessern. – httpete

2

haben Sie einen Blick auf die Registerkarte Timeline der großen Symbolleiste/Profiler, die Symfony bietet: http://symfony.com/blog/new-in-symfony-2-2-new-stopwatch-component (nicht darauf beschränkt zu 2.2)

Verwenden Sie localhost als database_host? Wenn ja, versuchen Sie stattdessen 127.0.0.1!

Zugriff auf eine API von Drittanbietern wie Facebook (FOSUserBundle)?

+0

Ich benutze Symfony v2.0.9, also kann ich die Komponente installieren? Ich verwende 127.0.0.1 und FOSUserBundle. – httpete

+0

Die Symbolleiste ist definitiv für 2.0.9 verfügbar: https://github.com/symfony/symfony-standard/blob/v2.0.9/app/config/config_dev.yml # L9 Wie wäre es, wenn Sie Ihre Symfony-Version aktualisieren? Irgendwelche Fortschritte bei der Rendering-Zeit gemacht? – hacfi

+0

Ich habe die Stoppuhr-Komponente mit Composer installiert, aber es gibt nichts neues in meinem Web-Profiler ... Wenn ich es jemals funktionieren lasse, wird es in der Lage sein, Informationen vor der Ausführung des ersten Controllers bereitzustellen? (cf my code question) – httpete