next up previous contents
Next: Die Skriptenreihe im Einsatz Up: Implementierung Previous: Ausgaben

Algorithmus

Das Skript besteht aus einem Initialisierungsteil, einer Schleife in der die einzelnen Dokumente geholt und nach neuen Links durchsucht werden und einem Ausgabeteil.

Im Initialisierungsteil wird die Initialisierungsdatei gelesen und die entsprechenden Variablen gesetzt. Speziell ist hier zu erwähnen, daß das Topdokument aus der Initialisierungsdatei in den Array NEU eingetragen wird. Somit enthält dieser genau ein Element.

Die Hauptaufgabe des Skripts wird in der Schleife erledigt. Zuerst wird das erste Element im Array NEU ermittelt und damit gleichzeitig überprüft, ob der Array leer ist. Ist dies der Fall, wird die Schleife beendet. Außerdem wird die Schleife noch beendet, wenn die Anzahl der Schleifendurchläufe, die Angabe über die maximal zu prüfenden Links überschreitet.
Es muß auch noch auf einen anderen wichtigen Sachverhalt hingewiesen werden: Die Reihenfolge, in der die Links abgeprüft werden ist völlig willkürlich. Sie hängt von der PERL-internen Verwaltung des assoziativen Arrays ab [7]. Dies spielt aber keine Rolle, da eine Domaine sowieso fast immer komplett durchsucht werden soll.
Nachdem nun ein zu prüfender Link ermittelt wurde, wird entschieden, ob eine Anfrage mittels der Methode HEAD ausreicht, oder ob das Dokument komplett mittels der GET-Methode geholt werden muß. Die Methode HEAD reicht aus, wenn sich der Link auf einem nicht zu durchsuchenden WWW-Server befindet, oder wenn sich die Endung in der Liste, der nur mit der HEAD-Methode zu prüfenden Links befindet. Charakteristisch für die HEAD-Methode ist, daß nur der Kopf des Dokuments übermittelt wird. Man bekommt also nur die Meldung, daß dieses Dokument erreichbar ist. Da man den Inhalt solcher Dokumente nicht kennt, kann man hiermit aber keine neuen Links ermitteln. Der Vorteil der HEAD-Methode ist die geringe Netzbelastung und die kurze Übertragungszeit.
Erkennt das Skript die HEAD-Methode als ausreichend, so wird das Unterprogramm HoleKopf aufgerufen, anderenfalls das Unterprogramm HoleLinksZuEinerSeite. Diese Unterprogramme liefern einen assoziativen Array zurück, der das gleiche Format hat, wie die Arrays NEU, ERL, ERR. In diesem Array befinden sich die Links, die in dem Dokument gefunden werden konnten (bei GET-Methode). Außerdem enthält der Array, falls das Dokument nicht erreichbar war, einen Eintrag ,,FEHLER ``. Unter diesem Eintrag wird der Fehlercode gespeichert. Falls das Dokument erreichbar war und ein Betreuer ermittelt werden konnte, exisitert noch der Eintrag ,,BETREUER ``. Unter diesem Eintrag wird die eMail-Adresse des Betreuers übergeben.

Die nächste Aufgabe des Skripts ist also, zu prüfen ob ein Fehler auftrat. Ist dem so, wird der Datensatz mit Fehlercode in den Array ERR geschrieben.
Trat kein Fehler auf, so wird der Datensatz zum geprüften Link mit eMail-Adresse des Betreuers in den Array ERL geschrieben. Nun wird eine Funktion aufgerufen, die die in dem Dokument gefundenen Links in den Array NEU aufnimmt. Dabei wird darauf geachtet, daß sich ein Link nicht schon in einem der drei Arrays befindet. Dies ist unbedingt erforderlich, um Zyklen auszuschließen.

Nachdem nun noch der gerade getestete Link aus dem Array NEU gestrichen wurde, ist ein Schleifendurchlauf beendet.

Was ist also mit den Arrays geschehen? Ein Eintrag aus dem Array NEU wurde entweder in den Array ERR oder in den Array ERL verschoben, je nachdem ob ein Fehler beim Prüfen des Dokuments aufgetreten ist oder nicht. Außerdem wurden neu entdeckte Links in den Array NEU eingetragen.

Der Ausgabeteil am Schluß sichert zuerst die drei Arrays NEU, ERR, ERL mit einem Kopf in die drei Log-Dateien LinkTest.NEU.LOG, LinkTest.ERR.LOG, f.ERL.LOG. Dabei wird jeder Datensatz in übersichtlicher Darstellung und in interner Darstellung eingetragen. Die interne Darstellung wird von den zwei Zusatzskripten benötigt. Außerdem wird zu jeder Sitzung auch eine Log-Datei LinkTest.log erstellt. In dieser Datei werden die an die jeweiligen WWW-Server verschickten Requests mitprotokolliert. Nach Erstellung der Log-Dateien wird, falls Mails erwünscht sind, das Unterprogramm zum Verschicken der Mails aufgerufen.

Nach einem kleinen Hinweis auf die beiden Zusatzskripten ist das Programm beendet. Die Beziehungen der erstellten Skripten untereinander und zur Umgebung stellt die Abbildung auf Seite [*] dar.


next up previous contents
Next: Die Skriptenreihe im Einsatz Up: Implementierung Previous: Ausgaben
Copyright Munich Network Management Team