AW: allegro.pl
Thomas Berger
ThB at gymel.com
Fr Sep 6 21:28:09 CEST 2002
Hallo Herr Grossmann,
> Hallo inetbib,
Gluecklicherweise nicht inetbib, sondern die allegro-Liste...
> > sein kann", aber irgendwie hält sich niemand an den Spruch. Es gibt aber
> > eine generelle Abhilfe:
> >
> > In allegro.pl gibt es die Routine TCPConnect.
>
> Die Routine _TCPConnect_ haben wir bei uns in acwww25.pl gefunden!(?)
richtig, Herr Hoeppner bezog sich vermutlich auf die
Aufrufe von TCPConnect().
> > Die wird in deinem Paket immer am Anfang eines jeden Scriptes aufgerufen.
>
> Bei uns dürften es acindex.pl, regsrch.pl und allegro.pl sein.(?)
ja. Herr Hoeppner behauptet, die Aufrufe stehen in *Ihrer*
Version der Skripten.
> > Diesen Aufruf an den Stellen immer streichen, besser erstmal
> > nur auskommentieren. Dann in allegro.pl am Anfang der Routine
> > AuftragErgebnis genau den Aufruf wieder einbauen.
> Die Routine _AuftragErgebnis_ haben wir bei uns in acwww25.pl
> gefunden!(?)
schon richtig so.
> > Die Routine sieht dann so aus:
> >
> > ### Auftrag abschicken und das Ergebnis einsammeln
> > sub AuftragErgebnis
> > {
> > if ($TalkModus == 1){
> > if(open( NMPIPE, "+>$PipeName" )){
> > NMPIPE->autoflush(1);
> > print NMPIPE $jobtext;
> > }
> > else {
> > ...
hier wird es gerade interessant:
# kein elsif, da die Bedingung auch von erstem if erreicht wird
if ($TalkModus == 2){
&TCPConnect; # falls noch nicht verbunden
print S $jobtext;
> Die Routine sieht bei uns anders aus:
>
> ### Auftrag abschicken und das Ergebnis einsammeln
> sub AuftragErgebnis
> {
> print S $jobtext;
> print S "AVANTI:EOJ";
> $Input="";
> while (<S>) {
> # bis das Ende-Signal der Antwort empfangen wird: EOR (=End of Reply)
> if(/AVANTI:EOR/) {last;}
> $Input.=$_;
> }
> return($Input);
> }
das scheint eine aeltere Version zu sein.
> Ist meine Interpretation richtig, dass der Kunstgriff darin besteht, die
> Routine _TCPConnect_ nicht mehr separat in den entsprechenden Skripten
> aufzurufen, sondern quasi als Bestandteil der Routine _AuftragErgebnis_
> ablaufen zu lassen?
Ja. Dies sollte Probleme mit avanti-w als Systemdienst in
der Version November 2001 und neuer loesen: Die Systemdienst-
Variante arbeitet sofort los, sobald ein "connect" erfolgt,
d.h. sie wartet nicht darauf, dass der Job auch abgeschickt
wurde, geschweige denn angekommen ist. Dadurch, dass
"Connect" und "print" mit dem Jobtext in verarbeitungs-
technische und zeitliche Naehe gebracht werden, erhoeht
sich die Wahrscheinlichkeit, dass avanti erst aufwacht,
wenn es den kompletten Job sehen kann.
Die von Herrn Hoeppner eigentlich zitierten Skripten
in der Version vom 24.5.00 haben diese Zusammenlegung
bereits durchgefuehrt, d.h. es gibt keine Aufrufe
von TCPConnect mehr in den einzelnen Skripten, sondern
nur noch innerhalb AuftragErgebnis in acwww25.pl
avanti-x und avanti-w als Nicht-Systemdienst sind nicht
betroffen.
viele Gruesse
Thomas Berger
Mehr Informationen über die Mailingliste Allegro