Marko: Nochmal Urls Checken mit Socketfunktion

Beitrag lesen

Hi,

der letzte Thread ist schon unten rausgefallen (muss mal gucken, ob die dann irgendwo unterm Schreibtisch liegen:-)  ), also auf ein Neues. Ich hab die URL Check Funktion http://forum.de.selfhtml.org/archiv/2003/1/34843/#m189859 noch geringfügig erweitert, poste sie mal, vielleicht braucht das ja noch jemand irgendwann:

function checkURL( $pURL, $pVerbose=1 )
{
  $http_status = -1;
  $URL = parse_url( $pURL );
  if( $URL[path] == '' ){
    $URL[path] = '/';
  }
  if ($fp = fsockopen ($URL[host], 80, $errno, $errstr, 10))
  {
    socket_set_timeout( $fp, 10 );
    $query = "HEAD ".$URL[path]." HTTP/1.0\r\nHost:".$URL[host]."\r\n\r\n";
    print($query."<br>\n");
    fputs ($fp,$query);
    $response = trim(fgets($fp,128));
    $http_status = preg_replace("/HTTP/1.. /","",$response);
    $http_status = preg_replace("/ .*/","",$http_status);
    if( !$pVerbose ){
      do
         print($response."<br>\n");
      while($response = trim(fgets($fp,128)));
    }
  }
  else{
     print("Ungültige URL");
  }
  return $http_status;
}

Das läuft jetzt auch braucht halt seine Zeit, und mit vielen Links rennt der Webserver irgendwann in den Scripttimeout. Was haltet Ihr von der Idee das jetzt so umzuschreiben, das parallel z.B. 200 Sockets geöffnet werden, und 200 Links gleichzeitig gecheckt werden. Oder leg ich damit den Server zeitweise lahm, ich glaube die Anzahl der TCP Verbindungen ist ja beschränkt, oder ?

Gruss

Marko