Wenn Sie sich eine PHP-Quelldatei ansehen, werden Sie eines feststellen. Es ist eine Quelldatei. Nicht besonders überraschend, aber denken Sie bei der Bereitstellung einer PHP-Anwendung darüber nach, was Sie bereitstellen? PHP-Quelldateien. Jetzt für viele andere Sprachen; Java, C usw. Wenn Sie eine Anwendung bereitstellen, stellen Sie die kompilierte Datei bereit. Die Frage, die Sie sich stellen möchten, lautet also: Wie viel Zeit verbringt eine PHP-Anwendung mit dem Kompilieren von Quelldateien im Vergleich zum Ausführen des Codes? Das beantworte ich dir, viel.
Die Bereitstellung von Quelldateien hat jedoch Vorteile. Es macht es einfach, im Handumdrehen Änderungen oder Fehlerbehebungen an einem Programm vorzunehmen, ähnlich wie wir es in den frühen BASIC-Sprachen getan haben. Ändern Sie einfach die Datei und beim nächsten Zugriff wird Ihre Änderung übernommen. Wie können wir also die dynamische Natur von PHP beibehalten, aber unsere Dateien nicht bei jedem Zugriff neu kompilieren?
Ein PHP-Cache. Es überrascht mich, dass dieses Konzept nicht in die Basis-PHP-Engine integriert ist, aber vielleicht liegt das daran, dass einige Unternehmen dieses Add-On verkaufen können, um PHP zu beschleunigen. Zum Glück für uns stellen einige Unternehmen/Open-Source-Projekte dieses Plug-in für PHP kostenlos zur Verfügung. Diese Plug-Ins sind allgemein als PHP-Beschleuniger bekannt, einige von ihnen optimieren und dann zwischenspeichern und andere nur zwischenspeichern. Ich werde kein Urteil darüber fällen, welcher der beste ist, jeder von ihnen ist besser als nichts, aber ich habe mich für APC, den alternativen PHP-Cache, entschieden. Ich habe mich für dieses entschieden, weil es sich noch in der Entwicklung befindet und Open Source und kostenlos ist.
Alternative PHP-Cache finden Sie auf php.net, schauen Sie einfach in der linken Spalte nach APC. Es kommt in Quellform, also müssen Sie es vor der Installation kompilieren, machen Sie sich keine Sorgen um diesen Teil. Wenn Sie Red Hat 4 oder CentOS4 verwenden, erkläre ich Ihnen genau, wie es geht. Wenn Sie etwas anderes verwenden, benötigen Sie dieselben Tools, aber die Tools können etwas anders sein.
- Die Werkzeuge
Wissen Sie, wie viele Websites, Foren und Blogs ich mit meinen Fehlermeldungen besucht habe, bevor ich die Antworten auf das gefunden habe, was mir bei der Installation von APC – Alternative PHP Cache gefehlt hat? Zwei Tage wert, aber ich habe endlich die richtige Kombination gefunden und es ist wirklich ziemlich offensichtlich, wie alles, wenn man die Antwort kennt. Es gibt drei Sätze von Entwicklungstools, die Sie benötigen.
1a. Sie benötigen ein Paket namens “Entwicklungstools”, das alle wichtigen Entwicklungstools wie den GCC-Compiler usw. enthält.
1b. Sie benötigen ein Paket namens php-devel, das, wie Sie sich vorstellen können, Entwicklungstools für PHP sind
1c. Sie benötigen ein Paket namens httpd-devel, bei dem es sich natürlich um Entwicklungstools für den Apache-Webserver handelt.
Auf Red Hat oder CentOS sollten diese so einfach wie die folgenden 3 Befehle sein:
yum groupinstall “Entwicklungstools”
yum installiere php-devel
yum installiere httpd-devel
Sie werden diese drei nacheinander ausführen und alle Anweisungen befolgen (normalerweise nur Ja sagen).
Jetzt ist es an der Zeit, den Anweisungen des APC-Pakets zu folgen. Da sich diese im Laufe der Zeit ändern können, werde ich sie nicht durchgehen. Sie sind sehr vollständig. Wenn Sie den Anweisungen folgen und daraus eine apc.so-Datei erhalten, sind Sie fertig, ändern Sie einfach Ihre php.ini-Datei und Sie können loslegen.
Es gibt zwei Probleme, auf die ich gestoßen bin und auf die Sie möglicherweise auch stoßen können. Der erste ist ein Fehler beim Ausführen von phpize. Ich habe diesen Fehler ignoriert und alles ist gut gelungen, aber nicht bevor ich Stunden damit verbracht habe, nach der Lösung für diesen Fehler zu suchen. Hier ist der Fehler.
configure.in:9: Warnung: Definition von PHP_WITH_PHP_CONFIG unterzitiert
run info ‘(automake)Erweiterung alocal’
oder siehe http://sources.redhat.com/automake/automake.html#Extending-aclocal
configure.in:32: Warnung: Definition von PHP_EXT_BUILDDIR unterzitiert
configure.in:33: Warnung: Definition von PHP_EXT_DIR unterzitiert
configure.in:34: Warnung: Definition von PHP_EXT_SRCDIR unterzitiert
configure.in:35: Warnung: Definition von PHP_ALWAYS_SHARED unterzitiert
acinclude.m4:19: Warnung: Definition von PHP_PROG_RE2C unterzitiert
Die Leute hätten mich gezwungen, meine PHP-Version von 4.3.9 und alles andere unter der Sonne zu aktualisieren, um diesen Fehler loszuwerden, aber am Ende spielte es keine Rolle. Mein APC ist gut kompiliert und installiert und ich kann loslegen.
Das andere kleine Problem, auf das ich stieß, war der Speicherort von php-config. Die Installationsanweisungen wollten, dass ich Folgendes tue:
./configure –enable-apc-mmap –with-apxs
–with-php-config=/usr/local/php/bin/php-config
Meine php-config befindet sich jedoch in /usr/bin/php-config. Durch diese Änderung konnte dieser Teil funktionieren.
Also, haben Sie es satt, sobald dies erledigt ist, können Sie mit enormen Verbesserungen der Reaktionszeiten Ihrer Website und einer Reduzierung der CPU-Auslastung rechnen. Noch eine kurze Anmerkung: Mein Server hostet ungefähr 20 Websites, aber nur 3 oder 4 sind wirklich beschäftigt.