2009-06-01 7 views
4

Ich hatte den Eindruck, dass FastCGI Ihnen erlaubt, in Ihrer Webanwendung einmal zu laden, und dann "einfach" FastCGI mit einer Funktion, wie myHandleHTTPRequest($url), "bereitstellen", die dann aufgerufen würde, wenn eine Anfrage kam. Auf diese Weise erhalten Sie eine viel bessere Leistung, da Ihre App jederzeit im Speicher verfügbar ist, richtig?Laden einer PHP App/Framework in den Speicher nur einmal mit FastCGI möglich?

Aber ich beginne zu verstehen, dass dies nicht der Fall ist. Oder irre ich mich?

Es scheint mir, dass PHP von FastCGI geladen wird, ok, und das gibt einige Verbesserungen, aber dann meine App wird immer noch auf jede Anfrage neu geladen.

Ich möchte meine App laden (oder 'Framework') einmal lesen (und dann alle 500 Anfragen neu laden.) Kann ich das tun?

bearbeiten: Diese Frage in diesem neu formuliert wurde: Custom PHP FastCGI interface

Antwort

2

Ja, können Sie mehr oder weniger das, tun über all die fancy PHP integration stuff vergessen (das ist, was um Sie geben Allgemein-Zweck-PHP -Interpreter-As-FastCGI) und schreiben Sie Ihre Anwendung als FastCGI-Server an und für sich.

Das ist ein bisschen ein ganz anderes Thema, aber Sie könnten in how Perl apps go about it für einen Leitfaden suchen.

+0

Ok, danke! Eine bessere Frage ist vielleicht: "Wie schreibe ich eine PHP FastCGI Server App?" – 0scar

+0

Ich meine, vielleicht sollte ich diese Frage hier auf SO stattdessen ... – 0scar

+0

Eine gute Idee. :) – chaos

3

Was fastcgi tut, ist zu vermeiden, einen PHP-Interpreter für jede Anfrage zu erzeugen (wie CGI tut). Dies spart sehr viel Verarbeitungszeit, da der PHP-Interpreter mehr oder weniger wie mod_php im Speicher gehalten wird.

Was Sie tun können, die Leistung zu verbessern ist:

  1. Verwenden APC oder xcache, usw., die transparent jede PHP-Datei Vorkompilierung, bei jeder Anfrage neu zusammen zu vermeiden.
  2. Caching. Apc und andere bieten Mechanismen zum Speichern von Variablen mit einer Lebensdauer, die sogar zwischen Anforderungen reicht. Dies kann verwendet werden, um verarbeitete Daten zwischen Anforderungen zu teilen und Anwendungsdaten im Speicher zu halten.
+0

Danke! Ich wusste nicht, dass APC Daten zwischen den Anfragen im Speicher hält. Cool. – 0scar

+0

(Nun, ich wusste nicht über APC ...:) – 0scar

+0

Ich persönlich sehe dies eine praktikablere Option als eine benutzerdefinierte Schnittstelle mit fcgi. Ein optionales Caching-System zu erstellen, das die zuvor definierten Mechanismen verwendet, sollte in Ordnung sein. Ich halte es nicht für sinnvoll, die Portabilität zugunsten der Integration zu torpedieren. – azkotoki