Bing - Sitemap Ping

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Gunah
    antwortet
    der Header wird aber per "\r\n\r\n" getrennt meine ich irgendwie war das so... bin mir gerade nicht sicher

    Einen Kommentar schreiben:


  • Quetschi
    antwortet
    *seufz* der Response-Code ist immer die erste Zeile des Response-Headers und die wird schon in der while-Schleife vor deinem Code ausgelesen.

    Einen Kommentar schreiben:


  • Gunah
    antwortet
    dir wird nur die erste Zeile Ausgegeben:
    Beispiel aus der Doku
    Code:
    $handle = fopen ("/tmp/inputfile.txt", "r");
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose ($handle);

    Einen Kommentar schreiben:


  • Proteus1982
    antwortet
    So, hab das Script nun mal um zwei Zeilen ergänzt:

    Vor dem fclose:

    $res = fgets($fp, 1024);
    echo "Antwort: ".$res."<br>";


    PHP-Code:
        function pingBingSitemaps$url_xml )
        {
           
    $status 0;

            
           
    $fp = @fsockopen("www.bing.com"80);
        

           if (!
    $fp
           { 
            echo 
    "$errstr ($errno)<br />\n"
           } 
           else
           {
              
    $req =  'GET /webmaster/ping.aspx?siteMap=' .
                      
    urlencode$url_xml ) . " HTTP/1.1\r\n" .
                      
    "Host: www.bing.com\r\n" .
                      
    "User-Agent: Mozilla/5.0 (compatible; " .
                      
    PHP_OS ") PHP/" PHP_VERSION "\r\n" .
                      
    "Connection: Close\r\n\r\n";
              
    fwrite$fp$req );
              while( !
    feof($fp) )
              {
                 if( @
    preg_match('~^HTTP/\d\.\d (\d+)~i'fgets($fp128), $m) )
                 {
                    
    $status intval$m[1] );
                    break;
                 }
              }

           
    $res fgets($fp1024);
           echo 
    "Antwort: ".$res."<br>";
              
    fclose$fp );
           }
           return( 
    $status );
        } 
    Kommt dann "Cache-Control: private" zurück... sieht nicht richtig aus. Aber es gibt auch noch nen Artikel von Bing, in dem nichts davon steht, dass es eine Antwort gibt. http://www.bing.com/community/blogs/...s-sem-101.aspx

    Weis jemand noch was darüber ?

    Einen Kommentar schreiben:


  • Proteus1982
    antwortet
    Ah.. ich Idiot, da unten steht doch return status ... omg
    Hatte vergessen echo pingBingSitemaps(sitemap url) zu schreiben (nur function aufgerufen ohne das echo).
    Edit: Und es kommt auch der Header 200 ... jetz noch die Antwort von Bing auswerten... da wird sicher was kommen von wg. THX for your Webshit :P

    So jetzt probiere ich die fget function aus... betet
    Zuletzt geändert von Proteus1982; 03.11.2009, 10:53.

    Einen Kommentar schreiben:


  • Quetschi
    antwortet
    Wenn du dir das Script vom Threadersteller ansiehst, siehst du, dass es den HTTP-Response Status-Code auswertet. Ist dieser Wert gleich 200, dann ist alles in Butter. Konnte der Request nicht richtig verarbeitet werden, war fehlerhaft oder was auch immer, dann wird der angepingte Server mit einem anderem Statuscode antworten.

    Hier noch die gängigen Statuscodes im Fehlerfall und eine etwas verständlichere "Übersetzung" dazu

    Einen Kommentar schreiben:


  • Gunah
    antwortet
    PHP: fgets - Manual

    Einen Kommentar schreiben:


  • Proteus1982
    antwortet
    Frage

    Hallo zusammen,

    ich fuchse mich gerade erst in diese fsocket Funktionen rein. Das Thema finde ich sehr interessant, auch im Zusammenhang mit anderen Diensten wie Google Blog Ping usw.

    Aber hierzu: Habe das Script mal ausprobiert. Es gibt ja soweit ich sehen kann keine Ausgabe über den Rückgabewert. Wie kann man rausfinden, ob der ganze Prozess fehlerfrei ablief ? Gibt es eine Bestätigung von Bing ? Habs ja ausprobiert, das Script lief ohne Probleme durch, aber ich weis halt nicht, obs wirklich geklappt hat. Bei Google gibt es immer eine Response "Thanks for Ping" oder sowas in der Art.

    MfG

    Einen Kommentar schreiben:


  • Jarez
    antwortet
    Ich weiss ja, wo mir geholfen werden kann. *fg*

    Einen Kommentar schreiben:


  • Quetschi
    antwortet
    PHP: cURL Funktionen - Manual - dort findest du alles was du brauchst.

    Der Fairness halber sei gesagt, dass ich mit CURL schon mal so meine Problemchen wegen Bugs hatte - also eine relativ aktuelle libcurl sollte es schon sein.

    Einen Kommentar schreiben:


  • Jarez
    antwortet
    Das werde ich mir einmal ganz in Ruhe anschauen.

    Vielen Dank nochmals. ;o)

    Einen Kommentar schreiben:


  • Gunah
    antwortet
    PHP: curl_exec - Manual
    das Beispiel...

    bei setOpt muss man nur darauf dann achten: "CURLOPT_RETURNTRANSFER"

    Gruß
    Gunah

    Einen Kommentar schreiben:


  • Jarez
    antwortet
    Mit CURL habe ich noch nie was gemacht.

    Gibt es dafür einen fertigen Code Schnipsel oder einen Lösungsansatz?

    Einen Kommentar schreiben:


  • Quetschi
    antwortet
    Zitat von Jarez Beitrag anzeigen
    Für alle die das auch mal brauchen
    Nein, siehe Post#4 http://www.php-resource.de/forum/php...tml#post628021

    Einen Kommentar schreiben:


  • Jarez
    antwortet
    Ich sag es ja ... eine Pause ist notwendig ...

    Da macht man echt die schlimmsten und dümmsten Fehler ...

    Habe den Code noch mal geändert und nun funktioniert es auch.

    Für alle die das auch mal brauchen:

    PHP-Code:
        function pingBingSitemaps$url_xml )
        {
           
    $status 0;

            
           
    $fp = @fsockopen("www.bing.com"80);
        

           if (!
    $fp
           { 
            echo 
    "$errstr ($errno)<br />\n"
           } 
           else
           {
              
    $req =  'GET /webmaster/ping.aspx?siteMap=' .
                      
    urlencode$url_xml ) . " HTTP/1.1\r\n" .
                      
    "Host: www.bing.com\r\n" .
                      
    "User-Agent: Mozilla/5.0 (compatible; " .
                      
    PHP_OS ") PHP/" PHP_VERSION "\r\n" .
                      
    "Connection: Close\r\n\r\n";
              
    fwrite$fp$req );
              while( !
    feof($fp) )
              {
                 if( @
    preg_match('~^HTTP/\d\.\d (\d+)~i'fgets($fp128), $m) )
                 {
                    
    $status intval$m[1] );
                    break;
                 }
              }
              
    fclose$fp );
           }
           return( 
    $status );
        } 
    Danke für Eure Hilfe !!!!

    Ich hätte da sonst noch morgen dran gesessen.

    Einen Kommentar schreiben:

Lädt...
X