Michael Schröpl: Perl Script unterbrechen

Beitrag lesen

Hi,

eine suchmaschine soll bei einer gewissen anzahl von seiten eine volltextsuche durchführen.
dieses durchsuchen braucht natürlich server-CPU zeit, und da stehen leider nur 6 Sekunden zur verfügung,

Warum? Wer hat diesen Server-Timeout definiert?

was nicht reicht, um alle seiten zu durchsuchen.

Das kann passieren.
http://www.teamone.de/cgi-local/self/such.pl braucht für eine Suche durch das vollständige Archiv auf dem neuen Server (welches übrigens ein ganz harmloser PC mit AMD K3/700 ist, kein Riesenhobel wie der vorherige) etwa 12 Sekunden, für ein Datenvolumen von 88,8 MB.
Aber wenn Du Dir die Checkboxen auf der rechten Seite ansiehst, dann verstehst Du, mit welchem Konzept die Suchzeiten für 'normale' Suchvorgänge in den Griff zu bekommen sind: Durch inhaltliche Vorselektion des zu durchsuchenden Dokumentraums durch den Anwender selbst.

nun meine frage: gibt es eine möglichkeit, dem perl script zu sagen, dass es eine pause einlegt, und erst ein paar sekunden später weitersucht, damit das script weitersucht, und nicht nach 6 sekunden abbricht?

Das würde Dein Problem nicht lösen. Denn das Skript *bricht* bei Dir ja nach 6 Sekunden ab und pausiert nicht nur.

weil nach einer neuen suchanfrage stehen ja wieder 6 sekunden zur verfügung. weiß jemand eine lösung?

Wenn Du erreichen willst, daß ein erneuter Aufruf des Skripts *nicht* dasselbe tut wie der vorherige, dann muß das Skript irgendwie erkennen können, daß seine vorherige Operation noch nicht abgeschlossen ist. Also muß sich irgendwer auf dem Server gemerkt haben, in welcher Situation das Skript seine Arbeit unterbrochen hatte, und das Skript muß diese Information abfragen und vor allem an derselben Stelle weitermachen können.
Zum "Speichern" dieser Information auf dem Server gibt es natürlich eine Menge Möglichkeiten (daemon-Prozeß, der im Hintergrund sucht und das CGI-Skript nur als Dialogfrontend, also eine Client-Server-Struktur; oder 'einfach' den Zustand in einer Datei abspeichern.
Das "Merken" bringt aber eine Menge technischer Probleme mit sich: Die zu speichernde Information ist wahrscheinlich nicht ganz klein, und außerdem muß dieses Speichern auch dann funktionieren, wenn <n> Anwender das Skript *gleichzeitig* aufrufen, also irgendeine Art von Synchronisation etc.

Summa summarum: Es lohnt sich wahrscheinlich nicht, diesen Weg weiter zu verfolgen.

Dagegen lohnt es sich auf jeden Fall, Dein Suchverfahren zu überdenken, weil Du ja durch entsprechendes Tuning auf jeden Fall den Server entlastest.
Und der scheint ja stark belastet zu sein, wenn er Dir nur Zeitscheiben von 6 Sekunden zur Verfügung stellen kann ...

Viele Grüße
      Michael