Zurück zur “Webseiten beschleunigen” – Übersicht
6.) PHP optimieren/caching
6.1) PHP-Daten zwischenspeichern
Im folgenden Blog-Eintag habe ich bereits den Vorteil dargestellt, wenn man php-Daten zwischenspeichert.
-> APC + eAccelerator + XCache <-
6.2) SQL-Abfrage mittels PHP zwischenspeichern
Man kann auch verschiedene Caching-Methoden miteinander kombinieren, so habe ich z.B. Zeitweise auf dieser Webseite sowohl eAccelerator als auch “memcached + php5-memcache” eingesetzt, jedoch war der Speicherverbrauch nicht für einen kleinen V-Server ausgelegt.
Distributed memory caching system, was bedeutet, dass als Speichersystem auch mehrere Rechner verwendet werden können, ursprünglich wurde memcache für Livejournal entwickelt.
Um mittels memcachd Daten direkt in den Arbeitsspeicher auszulagern, muss man als ersteres folgende Pakete installieren. – Debian/Ubuntu HowTo
sudo bash
aptitude install memcached
aptitude install php5-memcache
hier meine Konfigurationsdatei vom MemCache-Daemon
cat /etc/memcached.conf
## Daemon
-d## das Logfile
logfile /var/log/memcached.log## Ausgaben ins Log schreiben
# -v## mehr Ausgaben ins Log schreiben
# -vv## zur Verfügung stehende Arbeitsspeicher
-m 50# Port
-p 11211## User-Rechte
-u www-data## Interface/IP
-l 127.0.0.1
/etc/init.d/apache2 restart
Nun können wir bereits Daten direkt von PHP in den Speicher schieben.
Beispiel:
Im folgenden Beispiel werden die Ergebnisse einer SQL-Abfrage direkt in den Speicher geladen
<?php
$mc = memcache_pconnect('127.0.0.1', 11211);
$query = "SELECT n.*, u.user_id, u.user_name,[...]
$ergebnis = memcache_get($mc, $id);
if(!$ergebnis) {
$sql->db_Select_gen($query);
$newsList = $sql->db_getList();
$ttl = 3600;
memcache_set($mc, $id, $newsList, MEMCACHE_COMPRESSED, $ttl);
}
foreach($newsList as $row)
{ [.........]
?>
Links:
memcached.org
php.net/memcache
6.3) PHP-Module deaktivieren
Ggf. kann man auch noch einige PHP-Erweiterungen abschalten, um den Speicherverbrauch von PHP zu verringern und dies somit zu beschleunigen.
ls /etc/php5/conf.d/
meine aktuell aktivierten Erweiterungen:
- curl.ini
- gd.ini
- mcrypt.ini
- mysql.ini
- mysqli.ini
- suhosin.ini
- xcache.ini
[stextbox id=”info”]Man sollte natürlich beachten, welche PHP-Anwendungen man auf seiner Webseite installiert hat bzw. möchte und dessen Abhängigkeiten.[/stextbox]
6.4) php.ini (Konfiguration) optimieren
Als erstes müssen wir klären, welche Datei geändert werden muss, um die Konfiguration von PHP wirklich zu ändern, dafür nutzen wir am einfachsten eine php_info.php – Datei, welche im Webverzeichnis abgelegt wird und direkt über den Browser aufgerufen wird.
vim php_info.php
<?php
phpinfo();
?>
Bei mir wird angezeigt, dass die Konfigurationsdatei an folgender Stelle editiert werden muss.
vim /etc/php5/apache2/php.ini
- register_argc_argv = Off
Diese Einstellung ist nur nützlich, wenn man PHP über die Kommandozeile aufruft und dort Parameter mitgeben möchte, ansonsten aus.
- always_populate_raw_post_data = Off
Da ich diese Funktion nicht nutze hab ich diese deaktiviert, sollte man einfach mal ausprobieren…
… die meisten Einstellung an PHP muss man jedoch, genauso wie die meisten Einstellungen an eine bestimmte Situation anpassen!