class Egret {
protected $size; // cm
protected static $counter = 0;
public function __construct() {
$this->size = rand(27, 230);
self::$counter++;
}
public function __destruct() {
echo 'Krawg! Kraahg!! *I am dying!*' . PHP_EOL;
self::$counter--;
}
public function getSize() {
return $this->size;
}
public static function getCount() {
return self::$counter;
}
}
Read more
Eine Einführung in Objektorientierung (OOP) in PHP. PHP 5 wohlgemerkt, was einen großen Unterschied macht, denn in PHP 4 sah der Aufbau einer Klasse noch etwas anders aus und sie taugten auch weniger. Und ja, das ist ein Bär.
Read more
Für große und kleine Optimierungen werden häufig Caches eingesetzt. Im Bereich Webanwendungen meistens ein File-Cache. Beim ersten Aufruf einer Seite rattert der PHP-Code durch und die erzeugte HTML-Ausgabe wird als Datei gespeichert und ausgegeben. Bei jeder weiteren Anfrage wird dann nur noch auf die Datei zurückgegriffen. Der Gewinn besteht in geringerer Serverbelastung und schnellerer Ausgabe.
Bei meinen Unternehmungen die Datenbankanfragen zu reduzieren, musste ich die Ergebnisse kurzzeitig zwischenspeichern. Ein File-Cache wäre simpler Overkill und ein Datenbank-Cache wäre, nun, dämlich in dem Fall.
Zum Einsatz kommt jetzt eine kleine Klasse, die einfach nur Werte in Variablen speichert und in jedem Scope erreichbar ist. Aufgrund der kurzen Lebensdauer, die nur die Länge einer Seiten-Anfrage hat, heißt die Klasse „RequestCache“.
Read more
Bei meinem CMS-Projekt aestas2 möchte ich – so weit mir mit meinem aktuellen Wissensstand möglich – alles ordentlich erledigen und richtig machen. Features sind nicht alles, dazu gehört auch Optimierung. Dafür braucht man wiederum Zahlenwerte, die man für Vorher und Nachher vergleichen kann.
Zeitmessung
Am Einstiegspunkt des Skriptes merkt man sich den jetzigen Timestamp. Dann folgt der ganze eigentliche Ablauf mit Datenbankanfragen, Berrechnungen, Ausgaben oder was sonst geschieht. Danach, am Skriptende, wird die benötigte Zeit errechnet und ausgegeben.
$time_start = microtime( true );
[…]
$time_end = microtime( true );
$time = round( $time_end - $time_start, 4 );
echo 'Benötigte Zeit: ' . $time;
Die Messergebnisse schwanken dabei natürlich ein wenig und man sollte die Seite mehrmals neuladen, bevor man das Resultat bewertet. Beim lokalen Entwickeln ist auch zu bedenken, dass jedes weitere laufende Programm wie z.B. der Audioplayer Leistung nimmt und dadurch das Ergebnis verfälscht.
Read more