Ich habe eine Frage zur Leistung von Symfony2.
Ich entwickle seit einigen Wochen mit Symfony2 unter Ubuntu 11.04, Apache 2.2.17, PHP 5.3.5, APC 3.1.9, kein xDebug
In der Entwicklungsumgebung war die in der Symfony2-Symbolleiste angegebene Zeit nie über 70 ms.
Heute habe ich versucht, meine App auf einer Windows 7-Umgebung zu installieren: Wampserver 2.2, PHP 5.3.8, Apache 2.2.21, APC 3.1.7, kein xDebug
Der Computer in der Windows-Umgebung ist viel besser als der auf Ubuntu (SSD, Quad-Core, usw.).
Und wenn ich die Anwendung in der Entwicklungsumgebung ausführe, zeigt die Symbolleiste immer mindestens 300 ms an.
Weißt du also, wie es möglich ist?
Danke!
BEARBEITEN: einen Link zu dem Thema gefunden: Ссылка
Ich habe das Problem mit der Funktion file_exists auch bemerkt (mit webgrind).
Also, irgendwelche Ideen?
Vielleicht wurde das Thema bereits besprochen, aber ich war überrascht, nichts Ähnliches zu finden.
TL; DR; Setze realpath_cache_size auf einen Wert & gt; 1000
Edit 2: Problem in diesem PR gelöst: Versuchen Sie, realpath_cache_size von PHP.ini auf einen Wert & gt; 1000 Vor kurzem wurde eine Symfony-Anforderung hinzugefügt, die dieses Problem behebt: Ссылка
Bearbeiten: Ich habe gerade diese Antwort gesehen: Ссылка Und es hat die Seitengenerierungszeit um 4 auf Windows reduziert, wenn ich realpath_cache_size = 4096k in meiner php.ini (!)
gesetzt habeAlte Antwort:
Also habe ich einen Vergleich zwischen beiden mit webgrind gemacht:
Auf Windows (schneller Computer), genannt app_dev.php:
Sie sehen also, dass die Websymbolleiste eine Zeitgenerierung von 764ms anzeigt (erhöht durch xDebug und Profiling, aber immer noch relevant). Webgrind zeigt:
Auf Linux (langsamer Computer), app_dev.php:
298ms der gesamten Generationszeit (das ist mehr als zweimal weniger als bei Windows).
Das Problem scheint file_exists () und filemtime () zu sein, die unter Windows viel langsamer sind als unter Linux. Unter Windows sucht PHP 60% der Zeit nach Dateien mit file_exists, filemtime, loadClass oder findFile. Ist das ein bekanntes Problem?
Edit: Das Problem ist also nur für die Dev-Umgebung, in der Produktion werden keine file_exists ausgeführt, da alles zwischengespeichert ist.
Ich habe gerade angefangen, mit Symfony2 unter Windows zu entwickeln und das war ein absoluter Schmerz in meinem Arsch - Ich habe xcache, apc und eaccelerator getestet, was fast keinen Unterschied macht oder einfach zusammen mit xdebug abgestürzt ist.
Jetzt habe ich WinCache von Microsoft entdeckt - was Symfony2 unter Windows unglaublich schnell gemacht hat ...
Meine Anfragen haben etwas zwischen 1.5s und 3s - mit WinCache bis zu 200ms . Und es stört nicht einmal xdebug - Profiling und Debugging funktioniert immer noch wie ein Charme.
Bearbeiten: Dies ist alles über die Dev-Umgebung.
Der einzige Nachteil ist, dass es nur auf NTS php läuft und ich denke, die Apache-Module erfordert ts - wenn Sie es mit fcgid ausführen, werden Sie keine Probleme haben.
Ich kann nicht glauben, dass ich so viele Jahre ohne dieses Monster gearbeitet habe ...
Links:
WinCache auf php.net
Offizielle WinCache-Site
Binaries
Interessant gefunden!
Ich würde sagen, da dies überhaupt kein symfony2 Problem ist, muss es in PHP binary behoben werden.
Aber wer betreibt seinen Webserver überhaupt unter Windows? : D
Tags und Links php performance apc