Jeder Leistungsvorteil wäre vernachlässigbar. Es ist einfach eine weitere Option, um Ihren PHP-Build zu verpacken.
Auf meinem Mac verwende ich Marc Liyange's PHP-Build , der unter anderem in PostgreSQL-Unterstützung. Es wurde mit dem Flag --with-pdo-pgsql
erstellt. Daher muss es nicht mit der gemeinsam genutzten Bibliothek pdo-pgsql verteilt werden.
Wenn er nicht mit --with-pdo-pgsql
erstellt hätte, hätte er die freigegebene Bibliothek pdo-pgsql verteilen und eine Anweisung in php.ini
einfügen müssen, um sie zu laden. Sicher, es ist nur ein kleiner Unterschied, aber wenn Sie wissen, dass Sie diese Funktionalität verwenden werden, ist es in Ordnung, es in PHP selbst zu bauen.
Vielleicht ein Unterschied im Speicherbedarf?
Korrigiere mich, wenn ich falsch liege, aber ein eingebautes Modul wird bei jedem Prozess im Speicher dupliziert (weil es statisch verknüpft ist), während ein geteiltes Modul nur einmal geladen und von allen PHP-Prozessen geteilt wird.
Vielleicht ist es keine vollständige Antwort auf Ihre Frage, aber hier ist, was ich bisher finden konnte: Es gibt eine Art von Teilantwort in dem Buch " Erweitern und Einbetten von PHP ", geschrieben von Sara Golemon ( amazon ; einige Teile sind auch in Google-Büchern verfügbar).
>Der relevante Teil (ein Hinweis oben auf Seite 56) ist:
Überhaupt sich wundern, warum einige Erweiterungen sind konfiguriert mit
--enable-extname
und einige werden mit konfiguriert %Code%? Funktionell gibt es keinen Unterschied zwischen den beiden. Im Übung ist jedoch--with-extename
gemeint für Funktionen, die aktiviert werden können ohne dass ein Dritter benötigt wird Bibliotheken.--enable
ist dagegen gemeint für Features, die solche haben Voraussetzungen.
Also, kein einziges Wort über die Leistung (ich denke, wenn es einen Unterschied gibt, ist es nur eine Sache von Laden einer weiteren Datei vs Laden einer größeren Datei "); aber es gibt einen technischen Grund für diese Möglichkeit.
Ich nehme an, das ist so, weil PHP aufgrund einer Erweiterung keine zusätzliche externe Bibliothek benötigt; Mit der richtigen Option können Benutzer die Erweiterung selbst aktivieren oder deaktivieren, je nachdem, ob sie diese externe Bibliothek bereits besitzen oder nicht.
Ich habe bemerkt, wenn alle Funktionen als shared Module geladen werden PHP-Seiten laden schneller und CPU-Auslastung ist niedriger, jedoch einige Kommandozeilen-PHP-Funktionen nicht richtig funktionieren. Es ist logisch anzunehmen, dass ein gemeinsam genutztes Modul-Setup effizienter ist als ein großes statisches Binary, da die Module nur bei Bedarf geladen würden.
Ich nehme an, Nate hat recht mit der Leistung und dass diese Optionen nur zum Packen helfen.
Grundsätzlich kann PHP mit einem kompilierten Modul die Modulfunktionen direkt aufrufen, diese Aufrufe werden aber nach der Übersetzung in anzurufende Speicheradressen übersetzt.
In der ladbaren Modulversion ruft PHP einen dl_open auf, um die Bibliothek zu laden und ruft dann die Funktionen nach ihren Adressen auf, wie die kompilierte Version tut. Ich nehme an, dass dieser dl_open-Aufruf nur einmal ausgeführt wird, wenn der Webserver gestartet wird, damit Sie ihn ignorieren können.
Tags und Links php