AngieN: Verständnisfrage: PHP-basierte Adserver vs. Daemon

Hallo,

kann ein PHP-basierter Adserver (z.B. OpenX) in Sachen Performance so leistungsstark sein wie ein Adserver mit einem durchgehend laufenden Daemon?
So wie ich PHP verstehe, wird bei jedem Aufruf (Ad Request) zuerst das Script gestartet und abgearbeitet,
während bei einem Daemon oder Service der Prozess ständig läuft bzw. aktiv ist und nur darauf wartet, bis eine Anfrage kommt.
Bei letzterem scheint mir die logische Konsequenz zu sein, dass die Antwort wesentlich schneller kommt - als im Fall von PHP, wenn zuerst der Interpreter das Script laden/verarbeiten muss.

mpm/prefork stellt sicher, dass zumindest der Interpreter schonmal aktiv ist, oder wird dabei wirklich das gesamte Script - ähnlich schnell - wie bei einem laufenden Prozess/Daemon/Service "wachgehalten", um ebenso schnell antworten zu können?

Grüße

  1. Tach!

    kann ein PHP-basierter Adserver (z.B. OpenX) in Sachen Performance so leistungsstark sein wie ein Adserver mit einem durchgehend laufenden Daemon?

    Mit AdBlock spielt das keine Rolle ...

    So wie ich PHP verstehe, wird bei jedem Aufruf (Ad Request) zuerst das Script gestartet und abgearbeitet,

    Es gibt verschiedene PHP-Konfgurationen. Bei jedem Script-Aufruf PHP als CGI starten ist am aufwendigsten. FCGI ist schneller, PHP als Apache-Modul dürfte am schnellsten sein. Und dann kann man noch diverse weitere Beschleuniger verwenden, die den PHP-Code in vorcompilierter Form vorhalten.

    dedlfix.

    1. Mit AdBlock spielt das keine Rolle ...

      Sorry, was ist mit AdBlock gemeint. Dabei handelt es sich doch um ein Firefox Plugin oder gibts hierfür auch was bei PHP?

      Thx für die Antwort. Stellt sich natürlich die Frage, warum nicht jeder PHP als Apache-Modul nutzt oder ob das mit Nachteilen wie RAM Auslastung verbunden ist etc.

      1. Tach!

        Mit AdBlock spielt das keine Rolle ...
        Sorry, was ist mit AdBlock gemeint. Dabei handelt es sich doch um ein Firefox Plugin oder gibts hierfür auch was bei PHP?

        Wenn ich bei mir AdBlock laufen habe, dann spielt die Langsamkeit des Werbeservers keine Rolle mehr. Sehr entspannend, wenn ich nicht beim Seitenaufbau auf die Werbeauslieferung warten muss, für die ich sowieso nicht empfänglich bin.

        Stellt sich natürlich die Frage, warum nicht jeder PHP als Apache-Modul nutzt oder ob das mit Nachteilen wie RAM Auslastung verbunden ist etc.

        Mit PHP als Apache-Modul hat man keine systemseitige Trennung zwischen den Anwendungen/Anwendern. Alles läuft unter demselben Benutzer (dem des Webservers) und für ein bisschen Trennung muss man solche Krücken wie den Safe Mode verwenden. (F)CGI-Programme können über suEXEC unter bestimmten Nutzern gestartet werden, und dann können alle systemseitig vorhandenen Trennungen zwischen den Nutzern wirken.

        dedlfix.

        1. مرحبا

          Mit PHP als Apache-Modul hat man keine systemseitige Trennung zwischen den Anwendungen/Anwendern. Alles läuft unter demselben Benutzer (dem des Webservers)

          Könntest du bitte ein wenig genauer erläutern, wie oder wann sowas in der Praxis angewendet wird?

          Wie kann ich mir so eine Trennung zwischen den Anwendungen/Anwendern vorstellen, und was bringt so eine Trennung?

          mfg

          1. Tach!

            Mit PHP als Apache-Modul hat man keine systemseitige Trennung zwischen den Anwendungen/Anwendern. Alles läuft unter demselben Benutzer (dem des Webservers)
            Könntest du bitte ein wenig genauer erläutern, wie oder wann sowas in der Praxis angewendet wird?

            Ein Apache-Modul läuft im Rahmen des Apachen und unter dem dafür konfigurierten User. Das betrifft alle Anwendungen, die auf diesem Apachen laufen. Unter diesem einen User laufen auch alle Dateioperationen. Als eine Anwendung unter vielen kann man also alles lesen, was andere Anwendungen so produzieren und was ihnen gehört (Codedateien mit (Datenbank-)Passwörtern beispielsweise). Diesem Manko hat man versucht mit dem Safe Mode zu begegnen. Das war aber eine Krücke mit mehr Nach- als Vorteilen und aus sicherheitstechnischer Sicht kein guter Ansatz.

            Mit PHP als (F)CGI kann man über suEXEC konfigurieren, die Verarbeitung unter einem jeweils eigenen User laufen zu lassen. Und dabei können die bereits vorhandenen Möglichkeiten des darunterliegenden Betriebs- und Dateisystems verwendet werden, ohne dass man noch eine weitere Sicherheitsschicht (Safe Mode) einziehen muss. Einem separaten User kann man über die Dateiberechtigungen Zugriff gewähren oder verweigern - natürlich nur, wenn man bei der Rechte-Vergabe mit Bedacht vorgeht und nicht alles auf 777 stellt.

            Wie kann ich mir so eine Trennung zwischen den Anwendungen/Anwendern vorstellen, und was bringt so eine Trennung?

            Du kannst dir das so vorstellen wie die Trennung von "ganz normalen" Usern unter Unix (oder auch Windows mit NTFS). In der Tat ist es genau das. Solch eine Trennung bringt ein access denied schon von Seiten des Betriebssystems her.

            dedlfix.

            1. مرحبا

              Du kannst dir das so vorstellen wie die Trennung von "ganz normalen" Usern unter Unix (oder auch Windows mit NTFS). In der Tat ist es genau das. Solch eine Trennung bringt ein access denied schon von Seiten des Betriebssystems her.

              Danke für die Erklärung.

              mfg