PHP optimieren

This blog post has been published on 2010-07-26 and may be out of date.

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!

Published by

voku

Lars Moelleken | Ich bin root, ich darf das!

%d bloggers like this: