Server lahmlegen für Anfänger
Mittwoch, 18. Juni 2008, 15:52 Uhr
Abgelegt unter: Anliegen,Coding,My Life,Web-Funde | Tags: , , ,

Ein netter Beitrag der Webmaster von Ubuntuusers.de. Bestimmt auch für ungeekige zum schmunzeln ;-)

Server lahmlegen für Anfänger

written by beewee, on 07.06.2008 16:44.

Auf der Suche nach dem Fehler, wegen dem der Benutzer dee keinen Dateianhang mehr hochladen konnte, stießen wir kürzlich auf dieses schöne Codestück in der Dateianhangserweiterung für PHP:

<?php

do

{

$this->attach_filename = $new_filename . ‘_’ .
substr
(rand(), 0, 3) . ‘.’ .
$this->extension;

}

while (physical_filename_already_stored(
$this
->attach_filename));

?>

Wenn dieser Code ausgeführt wird, überprüft er mit einer Datenbankabfrage, ob ein Dateianhang mit diesem Namen schon existiert und hängt bei Bedarf eine Zufallszahl an. Danach wird die Überprüfung nochmal ausgeführt, solange bis ein Dateiname, der noch nicht existiert, gefunden wurde. Das Problem an der Sache ist, dass die generierte Zufallszahl auf 3 Ziffern verkürzt wird. Wenn nämlich 999 mal ein Bild mit dem gleichen Namen hochgeladen wurde, führt das dazu, dass die Schleife niemals beendet wird, wodurch das Script so lange Datenbankabfragen ausführt, bis der PHP-Prozess die maximale Ausführzeit erreicht.

Und weil Statistiken tollTM sind, hier 2 Graphiken, die zeigen, was auf dem Server passiert ist, wenn jemand ein Bild mit dem Namen Bildschirmfoto.png hochgeladen hat:

Die Auslastung unseres Hauptservers:

Die Anzahl von Datenbankabfragen pro Sekunde:

Wie bei so vielem gilt hier natürlich auch: Mit Inyoka wird alles besser :)