Ich arbeite an einer Community-basierten Website, die zend framework verwendet - aber es ist so langsam, dass es eine Weile dauert, bis die Seiten geladen sind. Ich würde gerne wissen, welche Aspekte des Zend-Frameworks ich untersuchen sollte, um sicherzustellen, dass es viel schneller läuft.
Irgendwelche Tipps und Hilfe würden sehr geschätzt werden:)
Netter Rat - Ich nahm die Datenbank und indexierte sie von Grund auf neu - es gab keine Indizes, mit denen ich anfangen sollte: \ aber auf jeden Fall hat sich die Geschwindigkeit ein wenig verbessert, aber es ist immer noch ziemlich langsam. Gibt es noch etwas, das ich hier genau im Auge behalten muss?
Weil ich davon ausgehe, dass es etwas mit dem Framework zu tun hat, als ich zum ersten Mal grundlegende Tutorial-Projekte durchführte, die mit dem Framework erstellt wurden - sie waren auch ein bisschen langsam.
Schöne Tipps - wir haben uns den Zend Performance Guide Artikel angeschaut. Ich bin mir nicht so sicher, wo ich den Code für die Metadaten der Cachespeicher anlegen soll :( [tut mir leid, dass ich hier wie ein Noob bin], wie in Dieser Link
Wenn Sie sich im selben LAN wie der Server befinden (zumindest zum Testen), können Sie Ihr Profil (etwas) von einem Client aus überprüfen.
Wenn es sich um einen einzelnen Computer handelt, ist der wahrscheinlichste Grund für Verlangsamungen Speicherprobleme (etwas, das zu viel oder zu wenig Hauptspeicher verwendet), gefolgt von schrecklichen DB-Abfragen.
Ein PHP-Opcode-Cache scheint immer hilfreich zu sein. Denken Sie auch daran, "atime" (Option noatime mount on * nix, eine Registry-Änderung unter Windows) zu deaktivieren, um teure Schreibvorgänge zu vermeiden.
Ein anständiger Artikel über weitere Zend-spezifische Dinge ist: Ссылка
Der einzige Weg, um sicher zu sein, wo Ihre Engpässe liegen, ist tiefes Profiling.
Ich benutze xdebug, kombiniert mit kcachegrind (Teil von kde für Windows). Es erzeugt vollständige Aufruf-Traces für jedes ausgeführte PHP-Skript, das Sie dann untersuchen können, um herauszufinden, welche Funktionen die meiste Zeit beanspruchen. Es sind keine Code-Änderungen notwendig, so dass Sie Bibliotheken von Drittanbietern wie Zend Framework einfach profilieren können.
Installieren Sie APC auf jeden Fall, da es Ihnen wahrscheinlich die größte Leistungssteigerung (2-4x) für die geringste Arbeit bringt. Ich würde auch empfehlen, dass Sie sich den Abschnitt "Leistung" des Referenzhandbuchs ansehen .
>Zend_Cache kann mit vielen der ZF-Komponenten verwendet werden, um sie zu beschleunigen, sowie mit deinen eigenen Daten.
Bei den meisten Leistungsproblemen im Web handelt es sich um Datenbankprobleme. Schauen Sie immer zuerst auf die Datenbankseite, bevor Sie fortfahren.
Es kann sein, dass eine Vielzahl von Datenbankaufrufen durchgeführt wird, bei denen Sie mit weniger Aufrufen genügen können, Indizes nicht in den richtigen Spalten.
Dies sind die Dinge, die normalerweise die Dinge verlangsamen.
Schauen Sie hier nach:
Performance Guide zu Zend
Zend_Log , das Log & amp; Verfolgen Sie Ihre Anwendung
Sie sollten den offiziellen Zend Performance Guide lesen.
Es gibt eine Menge Tipps, wie man die Geschwindigkeit von Zend verbessern kann, die meisten von ihnen sind über das Reduzieren der Anzahl von Dateien, die beim Start geladen werden.
In Bezug auf Zend_Db_Table
Metadaten-Caching sollten Sie den Cache in Ihrem Bootstrap konfigurieren und ihn als statische Eigenschaft der Klasse Zend_Db_Table_Abstract
hinzufügen.
(Ähnlich wie Sie einen Standard-Datenbankadapter öffnen und ihn als Standardadapter für alle Zend_Db_Table
-Objekte festlegen würden.)
Es gibt ein Codebeispiel zum Konfigurieren eines Standardmetadatencaches in dem Abschnitt des Handbuchs, mit dem Sie verknüpft sind. Dies würde in Ihrem Bootstrap gehen.
Wenn Sie zu Beginn noch keine INDEXES in Ihrer Datenbank hatten, bin ich mir sicher, dass andere Dinge, die Sie tun, sehr falsch sind!
Wie auch immer ... Installieren Sie APC, um Ihren Opcode zwischenzuspeichern. Dies wird die Ausführungszeit drastisch verbessern. Die meisten Frameworks haben aufgrund der enormen Menge an Skripten, die in Ihrer Anwendung enthalten sein müssen, enorme Gemeinkosten. APC wird dieses Problem buchstäblich lösen. FastCGI kann auch die Leistung drastisch verbessern. So können persistente Datenbankverbindungen (vorausgesetzt, FastCGI ist installiert und funktioniert).
Ich hatte ein sehr ähnliches Problem, es dauerte 10 Sekunden, um eine einzelne Seite zu laden, während ich an meiner lokalen Seite mit http://localhost/MY_WEB_SITE
arbeitete. Durch Zufall habe ich http://127.0.0.1/MY_WEB_SITE
ausprobiert und es hat sehr schnell (fast sofort) funktioniert. Ich bin mir nicht sicher, was das Problem mit localhost ist, aber es funktionierte für mich (übrigens bin ich auf Windows 7, checked system32 / drivers / etc / hosts und localhost ist dort definiert).
Anstelle von localhost kann die Verwendung von 127.0.0.1 auch eine Lösung für Sie sein.
Tags und Links php zend-framework