Das Putzlowitsch Test- und SEO-Blog

BornToBeASeo – ein Plugintest

borntobeaseo

Eigentlich will ich für diese Anfrage nur testen, ob das 123 Moderate Comment Notification-Plugin auch unter WordPress 2.8.x funktioniert. Da mir kein sinnvolles Thema eingefallen ist, muß nun wieder einmal borntobeaseo für den Test herhalten.

123 Moderate Comment Notification

Mit diesem Plugin kann man festlegen, wer alles eine E-Mail erhält, falls ein Kommentar z.B. zu borntobeaseo freigeschaltet werden muß. Normalerweise bekommt nur der Admin eine solche E-Mail. In Multiautorenblogs kann es aber sinnvoll sein, das auch die Autoren selbst Kommentare (sofern sie berechtigt sind) zu ihren eigenen Beiträgen moderieren, damit der Admin entlastet wird.

borntobeaseo – bitte jetzt kommentieren :-)

Damit ich nun sehe, ob tatsächlich auch Babsi eine E-Mail bekommt, muß hier jetzt bitte jemand einen Kommentar zu borntobeaseo hinterlassen. Danke!

Keine Kommentare »

Update auf WordPress 2.8.2

Da gab es vor ein paar Tagen grad erst das Update auf WordPress 2.8.1 und nun gibt schon wieder eine neue Version. Es ist laut WPD-Blog ein Sicherheitsupdate und wird deshalb dringen empfohlen. Na da will ich das hier gleich mal einspielen. Ich melde mich dann gleich zurück.

Update 12.33 Uhr: Habe das Update automatisch durchgeführt, hat gut funktioniert, bin nun wieder up-to-date :-)

Keine Kommentare »

Warum WordPress bei Strato so langsam ist

Eigentlich müßte ich besser sagen, was ist kein Grund dafür, daß WordPress beim Strato-Shared-Webhosting so langsam ist. Denn an einer vermeintlich schlechten Datenbankanbindung bzw. Datenbankperformance, wie man es oft in Foren oder auf Blogs lesen kann, liegt es nicht.

Datenbankgeschwindigkeit, der Test

Bei WordPress kann man sich alle Datenbankabfragen als SQL-String mit Ausführungszeiten und Aufrufhierarchie in Datenbank-Objekt unter $wpdb->queries speichern lassen. Dazu muß man in der wp-config.php die Konstante ‚SAVEQUERIES‘ mit true definieren:

define( 'SAVEQUERIES', true );

Genau das habe ich für die Startseite von schnurpsel.de gemacht und mir die Daten als PHP-Array in eine Datei geschrieben:

global $wpdb;
ob_start();
var_export( $wpdb->queries );
$out1 = ob_get_contents();
ob_end_clean();
plw123_debugfile_write( $out1 );

Diese Liste mit 51 SQL-Abfragen habe ich in ein einfaches PHP-Skript eingebunden und arbeite die Abfragen hintereinander ab. Es wird zunächst ein Connect zur Datenbank ausgeführt und anschließend folgende Schleife durchlaufen:

foreach( $sql_queries as $query ) {
	$dbd = @mysql_query( $query[0], $dbh );

	while( $row = @mysql_fetch_object( $dbd ) ) {
		$last_result[$num_rows] = $row;
		$num_rows++;
	}
	@mysql_free_result( $dbd );
	$num_queries++;
}

Es werden natürlich nicht nur die SQL-Abfragen ausgeführt, sondern auch die Ergebnisdatensätze mit mysql_fetch_object abgeholt. Nur die Ausgabe der Daten spare ich mir, das hat dann aber sowieso nichts mehr mit der Datenbank zu tun.

Datenbankgeschwindigkeit, das Ergebnis

Mal von ein paar Lastspitzen abgesehen, werden die 51 Abfragen und 539 Ergebnisdatensätze vom Strato MySQL 5 Server in etwa 0,2 Sekunden abgearbeitet. Man kann das hier [test-db-mysql5] live testen.

Ich habe das auch mal mit MySQL 4 probiert, da sind die Werte sogar noch etwas besser und liegen meist bei 0,1 Sekunden oder darunter [test-db-mysql4].

Und als dritten Test habe ich eine externe Datenbank (bei Host-Europe) eingebunden [test-db-ext]. Die 0,5 bis 0,6 Sekunden sind gar nicht mal so schlecht wenn man bedenkt, daß alle Daten über das Internet von Strato (Karlsruhe/Berlin) zu Host-Europe (Köln) und wieder zurück befördert werden müssen.

Mein Fazit

Die schlechte Geschwindigkeit von WordPress (und anderen umfangreichen PHP-Applikationen wie z.B. Joomla) liegt ursächlich nicht an einer schlechten Datenbankperformance, sondern vielmehr an einem nicht besonders schnellen Webserver/PHP.

Was hier nun im einzelnen das Problem ist, kann ich nicht sagen. Ein Geschwindigkeits-Nachteil ist sicher die Tatsache, daß PHP bei Strato als CGI läuft. Das bedeutet, daß für jeden Seitenaufruf ein neuer PHP-Prozeß gestartet werden muß. Konfigurationen, bei denen PHP als Apache-Modul läuft, haben da natürlich einen Geschwindigkeitsvorteil.
Vielleicht muß ja auch jede PHP-Datei bei Strato erst einen Sicherheitcheck durchlaufen, bevor sie geladen wird oder was auch immer.

Ein weiterer Hinweis für die mäßige PHP/Webserver-Performance sind auch die nicht besseren Ladezeiten des Strato Weblog-Basic, denn da ist überhaupt kein MySQL-Datenbankserver im Spiel. Die Daten liegen auf dem Webspace des Users und werden per SQLite eingebunden.

Trotz eigentlich nicht schlechter MySQL Datenbankgeschwindigkeit wird meine Startseite hier nicht schneller als in etwa 3,5 Sekunden geladen, dabei verwende ich fast eine WP-Standardkonfiguration ohne umfangreichen Plugins.

Meine Ausführungen tragen zwar nicht zur Lösung des Geschwindigkeitsproblems bei, aber vielleicht zum Verständnis der Ursache und Problematik an sich.

58 Kommentare »

Webmaster Friday – es geht los

Eher durch Zufall habe ich vom Webmaster-Friday erfahren und finde das eine gute Idee. Jeden Freitag wird ein Thema ausgerufen, zu dem man dann seine Gedanken auf der eigenen Seite, sei es nun Blog, Forum oder sonstwas, veröffentlichen kann, wenn man will. Das heutige Webmaster-Friday-Thema ist der Webmaster Friday selbst. Gut, er muß ja erstmal ein wenig bekannt gemacht werden, sonst sind dann bei den „richtigen“ Themen vielleicht nicht viele Leute dabei.

Falls es mal ein Thema zu eher technischen Dingen aus dem Bereich WordPress, Pluginentwicklung, PHP-Programmierung oder Webhosting gibt, bin ich sicher dabei, naja, falls ich dann Zeit habe.

Wenn sich nun noch jemand wundert, warum diese Seite hier nicht besonders schnell lädt, das liegt an Strato und WordPress, zwei Dinge, die nicht wirklich zusammenpassen.

Weitere Artikel mit Bezug zu diesem:
3 Kommentare »

Das neue WordPress 2.8

Diesmal habe ich nicht lange gefackelt und bereits zwei Tage nach dem Erscheinen der neuen WordPressversion 2.8 die 2.8er DE-Ausgabe gezogen und installiert. Bei 2.7 hatte ich ja erst die 2.7.1 abgewartet und nach den Problemen die aich da hatte, kann mich nichts mehr abschrecken :-)

Hat hier auch alles reibungslos funktioniert. Ich habe zunächst meine Schnurpsel-Seite in den Wartungsmodus versetzt, was ja seit WP 2.7 auch ohne Plugin funktioniert. Dann habe ich die Datenbank gesichert, das neue WP 2.8 komplett in ein neues Verzeichnis (blog_28) kopiert, mein spezielles Kopierskript angeworfen, welches mir alle individuellen Dateien (Plugins, Theme, Uploads, Config) aus der laufenden Installation in die neue kopiert und dann nur noch die Verzeichnisse auf meinem Webspeicherplatz umbenannt (blog -> blog_271 und blog_28 -> blog). Nun mußte ich nur noch den Wartungsmodus deaktivieren, die Datenbank durch Aufruf der upgrade.php auf den neusten Stand bringen und alles war gegessen. So einfach ist das :-)
Alle Plugins und das Theme scheinen erstmal fehlerfrei zu laufen.

Allerdings hatte die DE-Version 2.8 eine kleinen Fehler im Default-Theme. Das wäre mir beim Update ja nicht aufgefallen, aber da ich demnächst ein neues Webprojekt starte, habe ich dafür ein frische WP 2.8 installiert und da ich dort eine angepaßte Installation ohne diesen ersten Artikel, Kommentar und Seite verwende, trat der Fehler dann auf. Er wurde aber bereits kurz nach meiner Meldung im WP-Deutschland-Forum behoben.

Bei Putzlowitsch warte ich erstmal noch etwas, bis ich sicher bin, daß wirklich alles problemlos funktioniert, vielleicht stelle ich dann erst wieder mit der 2.8.1 um, mal sehen, mal gucken, mal schauen.

Ein Kommentar »