AW: allegro.pl
Burghard Großmann
burghard.grossmann at charite.de
Fr Sep 6 20:16:16 CEST 2002
Hallo inetbib,
da wir das beschriebene Problem(chen) mit der Anzeige bislang auch haben,
versuchten wir, den Lösungsvorschlag von Herrn Höppner bei uns
umzusetzen.
Dabei haben sich für uns folgende Unsicherheiten bzw. Fragen ergeben:
>>>>>>>>>>>>>>>>>> Ursprüngliche Nachricht <<<<<<<<<<<<<<<<<<
Am 02.08.02, 08:37:05, schrieb "Höppner," Dierk
<Dierk.Hoeppner at tib.uni-hannover.de> zum Thema AW: allegro.pl:
> Hallo Matthias,
>
> > Bei den "Dierk Hoeppnerschen Skripten" fuer Avanti kann
> > allegro.pl nicht
> > immer die Titel liefern, sondern verweist, nachdem die
> > Meldung kommt, dass
> > keine Treffer gefunden wurden, auf die naechste, erste... Seite. Dann
> > kommen auch die richtigen Treffer.
> > Das Lustige ist, dass bei einer kleineren DB, die mit exakt denselben
> > Skripten angesprochen wird, dieses Problem erheblich seltener
> > auftritt.
> >
> > Weiss jemand, wo da im Skript der Haken liegt?
>
> Genau habe ich das nie herausgefunden. "Was nicht sein darf, das auch
nicht
> 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!(?)
> 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.(?)
> 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!(?)
> 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 {
> ...
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);
}
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?
Mehr Informationen über die Mailingliste Allegro