Automatisierte Fortführung des ALB

Aus kvwmap
Wechseln zu: Navigation, Suche

--Pkorduan 15:55, 21. Apr 2006 (CEST)

Ich schlage ich folgenden Weg vor:

1. Es wird ein Cron-Job erstellt, der regelmäßig eine Skriptdatei auf der Komandoebene des Betriebssystems ausführt. Im Beispiel ist ff.wldge die Fortführungsdatei, nach der gesucht werden soll. Die Datei muss mit komplettem absolutem Pfad angegeben werden.

/DeinBinVerzeichnis/wldge_update /Verzeichnis_in_dem_gesucht_werden_soll/ff.wldge

2. Die Skriptdatei prüft ob in einem gegebenen Verzeichnis eine Datei angekommen ist. Wenn ja, dann wird diese mit dem wldge2sql Konverter eingelesen, wenn nicht passiert garnichts.

3. Das Einlesen kann durch einen URL-Aufruf z.B. mit lynx unter Angabe des Host, des Anwendungsfalles zum Aktualisieren des ALB und des Dateinamens erfolgen,jedoch wäre dann immer der lynx Prozess hinterher wieder abzuschließen. Deshalb ist es wohl besser das Command Line Interface (CLI) von php zu benutzen, um die php-Datei zur ALB-Fortführung auszuführen. Der Vorteil ist, daß die Ausgaben direkt in eine Protokolldatei umgeleitet werden können. Voraussetzung dafür ist, daß php mit CLI Unterstützung kompiliert wurde. Seit PHP 4.3.0 ist die Option --enable-cli standardmäßig auf on gestellt, also sollte es funktionieren. Das php-Binary für CLI Aufrufe liegt im Installationsverzeichnis von php unter sapi/cli. Diese Binary muss man ausführen. Siehe auch www.php.net manual Kapitel 43. Das Skript kann ungefähr so aussehen:

#! /bin/bash
if ls $1
 then 
  date >alb_update_log
  /phpinstallpath/sapi/cli/php /[wwwroot]/wldge2sql/index.php
  ALB_Aenderung 1 1 $1 >alb_update_log
fi

4. wwwroot ist das Verzeichnis in dem der wldge2sql-Konverter installiert ist. Hinter index.php kommen die Argumente, die an das php Skript übergeben werden sollen. Das sind die Werte, die sonst über das Formular wldgedateiauswahl.php übergeben werden. Damit index.php die Argumente auch auswerten kann ist in der Datei start.php folgende Zuweisung eingefügt worden.

if ($argc 0) {
  $arg['go']=$argv[1];
  $arg['ist_Fortfuehrung']=$argv[2];
  $arg['WLDGE_lokal']=$argv[3];
  $arg['WLDGE_Datei_lokal']=$argv[4];
  $GUI->formvars=$arg;
}
else {
  $GUI->formvars=$_REQUEST;
}

Wenn index.php also über CLI aufgerufen wird mit Argumenten ist argc größer 0 und die Argumente kommen von $argv, sonst von $_REQUEST;

5. Vor der Ausgabe der eigentlichen HTML-Seite liefert der Konverter Meldungen vom Einlesen der WLDGE-Datei. Danach kommt die Ausgabe der eigentlichen HTML-Seite. Um nur die Vorabausgaben des Konverters in die log-Datei zu übernehmen, muss der entsprechende Befehl zur Ausgabe der Seite auskommentiert werden. In der Datei index.php ist das $GUI->ouput();

Ich habe es getestet. Es funzt.