[PHP] Optimierung Crawler

Dieses Thema im Forum "Webentwicklung" wurde erstellt von GaYlORd, 3. Dezember 2012 .

Schlagworte:
  1. 3. Dezember 2012
    Optimierung Crawler

    Hi Leute,

    ich schreibe einen Crawler der Seiten aus einer Datenbank liest, sie nach keywords durchsucht und entsprechend einteilt.

    Allerdings ist er, wie ich finde, nicht sonderlich schnell (hab aber auch keinen vergleich...):
    PHP:
    $port  80 ;
    $er  NULL ;
    $err  "" ;
    $timeout  1 ;
    $FileHandle  = @ fsockopen ( str_replace ( "http://" , "" , $domain ),  $port $er $err $timeout );
    if(!
    $FileHandle ){
        echo 
    "[CRAWLER] " . $domain . " nicht erreichbar.<br />" ;
    }else{
      
    fclose ( $FileHandle );
      
    $file  = @ fopen ( $domain 'r' );
      if(
    $file ){
          
    $u  1 ;
          while (!
    feof ( $file )){
              
    $line  fgets ( $file , 1024 );
            for(
    $i = 0 ; $i < count ( $vz ); $i ++){
                for(
    $e = 0 ; $e < count ( $vz [ $i ]); $e ++){
                    
    $needle  $vz [ $i ][ $e ];
                    if(
    strpos ( $line , $needle )){
                      echo 
    "[CRAWLER] " . $domain . " erkannt als " . get_art ( $i ). " in Zeile " . $u . " anhand von " . $vz [ $i ][ $e ]. "<br />" ;
                      
    fclose ( $file );
                    break 
    3 ;
                  }
              }
              }
              
    $u ++;
            }
      }
    }
    Die beiden For-Schleifen sind ein 2-Dimensionales array:
    $arr[kat1][suchwort1]
    $arr[kat1][suchwort2]
    $arr[kat2][suchwort1]
    $arr[kat2][suchwort2]
    usw.

    Die Zeiten für 39 Domains:
    So wie er oben steht: ~110sek
    Ohne das fsockopen: ~195sek

    Kann man da noch mehr optimieren?

    Danke schonmal
    Gruß
    gl
     
  2. 3. Dezember 2012
    AW: Optimierung Crawler

    Bist du sicher das du dir das ganze gut überlegt hast?

    Soll das etwa eine LIVE Suche werden?

    Bild

    Webcrawler
     
    1 Person gefällt das.
  3. 3. Dezember 2012
    AW: Optimierung Crawler

    Denk schon

    Das soll keine Live Suche werden. Möchte nur die Seiten in meiner Datenbank Kategorien zuordnen. Zuerst prüf ich anhand des Domainnamens, obs da schon zugeordnet werden kann. Falls nicht muss die Seite auf bestimmte Keywords hin überprüft werden, um sie so zu kategorisieren -> Es bleiben nur eine handvoll übrig, die dann manuell abgearbeitet werden müssen.
    Das Skript soll nur einmalig eine recht lange Liste abarbeiten und danach alle paar Wochen nur paar Domains (vllt. 10-20). PHP unterstützt meines Wissens keine Threads, oder?
     
  4. 3. Dezember 2012
    AW: Optimierung Crawler

    Threads kann man für PHP nicht machen, aber halt mit einem Workaround.
    Dazu kannst du googlen. Man findet einige Möglichkeiten, die mehr oder weniger gut sind.
     
  5. 30. Dezember 2012
    AW: Optimierung Crawler

    [G]for($i=0;$i<count($vz);$i++){
    for($e=0;$e<count($vz[$i]);$e++){[/G]
    zu
    [G]for($i=0, $count_vz = count($vz);$i<$count_vz;$i++){
    for($e=0,$count_i = count($vz[$i]);$i<$count_i;$e++){[/G]
    umbiegen damit er nicht bei jedem durchlauf die count-function ausführt. Sollte aber nur marginal was rausholen
     
    1 Person gefällt das.
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.