Re: Workaround triffts leider nicht... - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 2.Februar.2001, 18:22.
    Wer macht hier denn dauernd diese unsinnige Serverlast??

      Uffz, also seit ein paar Tagen passiert es immer mal wieder, dass ein Skript losrennt und soviel CPU-Zeit und Speicher verbraucht, wie nur irgend geht, und das ohne aufzuhören... Argl!! Ich bin ja heilfroh dass er sich dann wieder fängt, aber der Server ist dann einige Sekunden/Minuten nicht erreichbar und überhaupt...

      Naja, derjenige der dafür verantwortlich ist, liest das hier wahrscheinlich eh nicht... ;-)

      Also: Der Stopper muss wieder her, mal sehen, vielleicht klappts ja diesmal...

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 2.Februar.2001, 18:50.
    So, Stopper stoppt wieder...

      So, der Stopper ist wieder aktiv und killt gnadenlos alle bösen Skripte... Und mitprotokolliert wird das auch, ich freu mich schon den ersten zu erwischen!! ;-)

      Hoffe dass es diesmal nicht zu anderweitigen Problemen (mit import etc.) kommt...

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 2.Februar.2001, 19:30.
    Re: So, Stopper stoppt wieder...

      Ääähm ... "seit ein paar Tagen" (s.u.) kann ich nicht gewesen sein, weil ich da nichts gemacht habe. Aber das eben ca. 18:30 bis 19:10 könnte auf mein Konto gehen. Ich verstehe zwar nicht so ganz warum, aber gefühlsmäßig gibt es da einen Zusammenhang.

      Den evtl. "Bösewicht" hänge ich mal an - es sollte eigentlich mal eine Volltextsuche werden :-((
      Klar, derzeit ist das nur ein Versuchsstadium und ich weiss auch, dass da noch viele Fehler drin sind

      <do action=input>
      <perl>
      $suchpfad="http://baseportal.de/cgi-bin/baseportal.pl?htx=/spd_schwelm/suche";
      
      "";
      </perl>

      <form action="$suchpfad" name="suche" id="suche" target="_self" dir="ltr" lang="de" enctype="multipart/form-data" method="post">
      Suchworte: <input type="text" name="suchwort=" size="40" maxlength="40">
      <input type="submit" name="button"></form>
      

      <perl>
      # Aufbereitung des Formularergebnisses
      # Leerzeichen am Ende von $suchwort abschneiden
      $strlen=length($suchwort);
      while (index($suchwort," ",$strlen)>=0) 
         {$suchwort=substr($suchwort,0,$strlen-1);
          $strlen--;
         } 
         
      # $suchwort in Kleinbuchstaben umwandeln
      $suchwort=~ tr/A-Z/a-z/; 
      

      # $suchwort in einzelne Worte aufteilen und in Array einfügen
      while (length($suchwort)>0)
      {
      $ende=index($suchwort," ",0);
      push(@suchwort,substr($suchwort,0,$ende));
      $suchwort=substr($suchwort,$ende+1,length($suchwort));
      }
      </perl>
      

      <loop db=meldungen sort=- code=perl range=0,2>
      # Meldungen nach jedem Array-Teil druchsuchen
      # Je mehr verschiedene gefunden werden, desto besser das Suchergebnis
      

      foreach(@suchwort)
      {
       # Abfrage der Datenbankfelder
       $Typ_=$Typ;
       $Typ_=~ tr/A-Z/a-z/;
       $Head_=$Head;
       $Head_=~ tr/A-Z/a-z/;
       $Text_=$Text;
       $Text_=~ tr/A-Z/a-z/;
      
       if (index($Typ_,@suchwort[$_],length($Typ)>=0)  {
       %ergebnis{$_id}=%ergebnis{$_id}+1;
       }else{
       "";
       }
       if (index($Head_,@suchwort[$_],length($Typ)>=0)
       {
       %ergebnis{$_id}=%ergebnis{$_id}+1;
       }else{
       "";
       }
       if (index($Text_,@suchwort[$_],length($Typ)>=0)
       {
       %ergebnis{$_id}=%ergebnis{$_id}+1;
       }else{
       "";
       }	
      }	
      </loop>
      <perl>
      #Hash sortieren nach Häufigkeit und Ergebnis ausgeben
      

      #@sortiert=sort by_zahl keys(%ergebnis);
      #sub by_zahl {
      #	return $ergebnis{$a} cmp $ergebnis{$b}
      #}
      #foreach (@sortiert) 
      #{
      #	if ($_>0)
      #	{
      #	get "ID==$_";"Meldungen";
      #	out $Head.\n;
      #	}else{
      #	"";
      #	}
      #}
      </perl>
      </body>
      </html>
      

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 2.Februar.2001, 19:36.
    Re: So, Stopper stoppt wieder...

      Weiss nich wer wann was wie - es ist extrem schwer rauszukriegen weil a) Fülle an Zugriffen und b) in dem Moment der Server nahezu steht...

      Ist auch nicht weiter schlimm, ich unterstell Dir (und keinem anderen) ne böse Absicht, obwohl ich vorhin schon ziemlich ins schwitzen kam...

      So oder so muss der Server gegen sowas gefeit sein, ich hoffe es gibt eine praktikable Lösung...

      Äh, den Code hättste mal besser nich hier reingepostet, am Schluss probieren damit welche rum und... ;-)

      Hab den Code jetzt zwar nicht 100% analysiert aber es sind ja einige "unsichere" Schleifen drin, bei denen Du die Variablen der Abbruchbedingung in der Schleife veränderst... Naja...

     Antworten

    Beitrag von Sander (8133 Beiträge) am Freitag, 2.Februar.2001, 20:49.
    Re: So, Stopper stoppt wieder...

      werde ich gleich mal einbauen und den stopper testen ;-))

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 3.Februar.2001, 15:48.
    Re: So, Stopper stoppt wieder... - ja genau... ;-)

      Ja, immer feste druff ;-)

      Das Problem ist, dass der Stopper leider keine 100% Lösung bringt: Er stoppt zwar manche Skripte, aber trotzdem läuft der Speicher voll und wenn da 2, 3 böde Skripte auf einmal anlaufen ist der Server in Nullkommanix zu (der Nachteil wenn er so schnell ist ;-) ) und dann steht alles erstmal... Naja, muss man wohl noch ein bisschen dran rumschrauben...

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 2.Februar.2001, 21:14.
    Problem eingegrenzt ...

      Also: Die Bearbeitung der Suchworte aus dem Formularfeld und deren Übergabe in ein Array klappen, das habe ich mit einer Kontrollausgabe gecheckt. Auch die Zeit wohl hierbei kein Problem. Damit sind alle While-Schleifen aus dem Schneider.

      Das Problem kommt später und zwar in folgendem Kontrukt:

      <loop db=xx>
      foreach (@array)
      {
      if(index($Datenfeld,$_,$Datenfeldlänge)>=0)
      {
      
      ...
      }
      else
      {
      
      "";
      }
      }
      </loop>
      

      Ich sehe da weder eine zu heftige Belastung noch eine Endlosschleife - aber ich bin ja auch nicht so helle wie andere hier ;-)

      Vielleicht hat ja einer eine Idee, weiss wo es hängt.
      Ansonsten muss ich halt warten, bis jemand eine Volltextsuche in die Bib stellt - ein solcher Lapsus reicht schließlich.

      Gruß
      Stephan

     Antworten

    Beitrag von Sander (8133 Beiträge) am Freitag, 2.Februar.2001, 21:26.
    Re: Problem eingegrenzt ...

      Ein workaround zur Volltextsuche stand schon mal im Forum, ich glaub von Andreas

      Sander

     Antworten

    Beitrag von Andreas (396 Beiträge) am Freitag, 2.Februar.2001, 21:43.
    Re: Problem eingegrenzt ...

      Hallo Sander,

      ich halte den von mir vorgeschlagenen Abgleich über reguläre Ausdrücke zwar für eleganter :-), aber das ist, glaube ich, nicht der Kern des Problems:
      Christoph hat schon damals darauf hingewiesen, daß er eine Volltextsuche über eine Textdatenbank (also längere Texte wie z.B. in einem Radaktionssystem, nicht die damals besprochene Suche in Schlagwortfeldern) für problematisch bzgl. der Serverbelastung hält. Hängt halt stark davon ab, ob jedesmal die letzten drei Presseerklärungen eines Kaninchenzüchetervereins oder das komplette Archiv von Spiegel-online durchsucht wird ... ;-)

      Gruß, Andreas

      P.S.: Ich habe für ein Projekt einen externen Suchservice in meine Seiten eingebaut. Die checken regelmäßig einmal die Woche mein Web, bauen dann intern eine Stichwortdatenbank auf, über die dann die Abfragen laufen. Dabei besteht zwar die Gefahr, nicht topaktuell zu sein, dafür scheint mir die Serverlast geringer.

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 2.Februar.2001, 21:54.
    Verrätst Du, wo Du suchen läßt?

      Kostet das was, wenn ja wieviel?

      Kaninchenzüchter triffts fast, aber 10 Beiträge pro Woche haben wir sicher ...

      Gruß
      Stephan

     Antworten

    Beitrag von Andreas (396 Beiträge) am Samstag, 3.Februar.2001, 08:22.
    Re: Verrätst Du, wo Du suchen läßt?

      Hallo,

      der Service, den ich einsetze, heißt "siteLevel" (http://intra.whatuseek.com/), läuft mit Werbebannern und ich setze ihn auch nur über statische Seiten ein. Da funzt er ziemlich gut, ob das über bp-Accounts geht, weiß ich nicht.

      Gruß, Andreas

     Antworten

    Beitrag von Sander (8133 Beiträge) am Freitag, 2.Februar.2001, 22:26.
    Re: Problem eingegrenzt ...

      so einen externen hab ich auch schon mal probiert, ich konnte ihn aber nicht auf meine BPseiten begrenzen, er hat eine Stunde indiziert und nach der logauswertung alles von bp gescannt :-)
      Wo und wie finde ich deinen?
      Kannst ja mal ein Link zu einem Suchbeispiel posten.
      Danke

      Sander

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Freitag, 2.Februar.2001, 21:51.
    Workaround triffts leider nicht...

      Hallo Sander!

      Danke für Deinen Tipp, habe gleich nachgeschaut und es dank der Volltextsuche von Christophs Forum auch gefunden.
      Diese Suchfunktion sucht aber nur Feldanfänge (=~ - Operator) und auch nur einen Suchbegriff.
      Ich denke, dass es möglich sein müsste, mehrere Begriffe innerhalb eines Textes zu suchen - hier im Forum geht das ja auch.
      Die Suchbegriffe habe ich alle in einem Array. Ich dachte, dass es sinnvoll wäre, einen Datensatz aufzurufen (mit loop), auf alle Suchworte aus dem Array zu prüfen (mit index in perl) und die Treffer zusammen mit der ID in einen Hash zu schreiben. Dann wird auf den nächsten Datensatz gesprungen.

      Wenn die Datenbank durchlaufen wurde wird der Hash nach Treffern sortiert.

      Dann kann man anhand der ID mit dem Get-Befehl die Datensätze nach Treffern sortiert auflisten.

      Problem: Ich packs nicht!

      Sander, Du sprudelnder Ideenquell, was sagst Du dazu?

      Gruß
      Stephan

     Antworten

    Beitrag von Sander (8133 Beiträge) am Freitag, 2.Februar.2001, 22:20.
    Re: Workaround triffts leider nicht...

      :-) Ich blick ja nicht mal bei deinem code durch ;-)
      soweit gehen meine Perl"kenntnisse" nicht.

      Sander

     Antworten

    Beitrag von Andreas (396 Beiträge) am Samstag, 3.Februar.2001, 08:27.
    Re: Workaround triffts leider nicht...

     Antworten

    Beitrag von Stephan Hix (106 Beiträge) am Samstag, 3.Februar.2001, 16:56.
    Ich habs! (Regulärer Ausdruck - war guter Hinweis!)

      Also ...
      Die Suche klappt so ganz gut. Wenn Christoph nicht wegen Serverlast rot sieht, könnte ich das ganze glatt auch in die Bib stellen. Da warte ich aber doch erst mal die Meinung vom "Chef" ab - nach dem ganzen Ärger ;-)

      Wer sich das ganze anschauen will:

      http://baseportal.de/cgi-bin/baseportal.pl?htx=/spd_schwelm/suche

      oder über www.spd-schwelm.de und dann über die Navigation in die Suche ...

      Danke an Sander und Andreas (und Matthias) für die Tipps!

      Gruß
      stephan

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Sonntag, 4.Februar.2001, 05:01.
    Re: Ich habs! (Regulärer Ausdruck - war guter Hinweis!)

      Äh, nee, lass mal lieber noch (das mit der Bib) - nichts gegen Deinen Code und momentan ist das auch die einzige Möglichkeit eine Volltextsuche zu machen, indem man durch alle Felder durchläuft, aber das ist bei ner grösseren Datenbank wirklich sehr, sehr zeitaufwändig - und wenn das dann in der Bib steht und sich jeder rauskopiert... ;-(

      Ich seh schon, ich muss in nächster Zeit dringend eine baseportal-interne Volltextsuche basteln... ;-)

     Antworten

    Beitrag von Winkiller (175 Beiträge) am Samstag, 3.Februar.2001, 17:59. WWW: www.8ung.at/hpks/
    Ist auch richtig so!

      Mir ist es schon einige male passiert, dass ich while(@Liste) stat for(@Liste) geschrieben habe. Das führt dann zu einer Endlosschleife.
      Ist mir bisher aber nur auf meinem lokalen Server passiert!

     Antworten


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.13s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!