Bing - Sitemap Ping

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

  • #16
    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.
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #17
      Ich weiss ja, wo mir geholfen werden kann. *fg*

      Kommentar


      • #18
        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

        Kommentar


        • #19
          PHP: fgets - Manual

          Kommentar


          • #20
            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
            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
            Schön - etwas Geschichte kann ja nicht schaden.
            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

            Kommentar


            • #21
              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.

              Kommentar


              • #22
                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 ?

                Kommentar


                • #23
                  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);

                  Kommentar


                  • #24
                    *seufz* der Response-Code ist immer die erste Zeile des Response-Headers und die wird schon in der while-Schleife vor deinem Code ausgelesen.
                    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                    Schön - etwas Geschichte kann ja nicht schaden.
                    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                    Kommentar


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

                      Kommentar


                      • #26
                        Zitat von Gunah Beitrag anzeigen
                        der Header wird aber per "\r\n\r\n" getrennt meine ich irgendwie war das so... bin mir gerade nicht sicher
                        Der Header wird dadurch vom Content getrennt - jedoch hier uninteressant, da der Header vor dem Content ausgeliefert wird und der Content muss für diese Zwecke hier nicht ausgelesen werden.
                        Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                        Schön - etwas Geschichte kann ja nicht schaden.
                        Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                        Kommentar


                        • #27
                          naja ohne explode oder ähnliches wirst du das meines wissen nach bei fsocketopen nicht hinbekommen, entweder man nimmt dann fopen, oder curl

                          Kommentar


                          • #28
                            Zitat von Gunah Beitrag anzeigen
                            naja ohne explode oder ähnliches wirst du das meines wissen nach bei fsocketopen nicht hinbekommen...
                            Das was hier gefordert ist? Wieso nicht?
                            Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                            Schön - etwas Geschichte kann ja nicht schaden.
                            Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                            Kommentar


                            • #29
                              Ah jetz ja...

                              Problem gelöst:

                              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;
                                              }
                                          }
                                          while (!
                              feof($fp))
                                          {
                                              
                              $res fgets($fp4096);
                                              echo 
                              $res;
                                          }
                                          
                              fclose($fp);
                                     }
                                     return(
                              $status);
                                  } 
                              Danke für die Tipps. Hatte mir das feof nicht angeschaut, was ja mit der Schleife unabdingbar ist. Das o.g. Script wurde vor dem fclose nun so erweitert, dass folgende Response kam:

                              Code:
                              Cache-Control: private Content-Length: 163 Content-Type: text/html P3P: CP="NON UNI COM NAV STA LOC CURa DEVa PSAa PSDa OUR IND", policyref="http://privacy.msn.com/w3c/p3p.xml" Date: Tue, 03 Nov 2009 11:50:08 GMT Connection: close Set-Cookie: _FS=mkt=-DE&ui=de-DE; domain=.bing.com; path=/ Set-Cookie: MUID=F7C26083DB3B4C208FFA1B629329E956; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/ Set-Cookie: OrigMUID=F7C26083DB3B4C208FFA1B629329E956%2c1307f89b261f4fd9aa1953178e44f7f3; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/ Set-Cookie: OVR=flt=0&DomainVertical=0&Cashback=cbtest4&MSCorp=kievfinal&GeoPerf=0; domain=.bing.com; path=/ Set-Cookie: SRCHD=D=968390&MS=968390&AF=NOFORM; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/ Set-Cookie: SRCHUID=V=2&GUID=48A93ECC44EC42BE98AB6ACFBCA3B3DB; expires=Thu, 03-Nov-2011 11:50:08 GMT; path=/ Set-Cookie: SRCHUSR=AUTOREDIR=0&GEOVAR=&DOB=20091103; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/ Thanks for submitting your sitemap.200
                              In der Browser-Quelltextanzeige sieht das dann so aus:
                              Code:
                              Cache-Control: private
                              Content-Length: 163
                              Content-Type: text/html
                              P3P: CP="NON UNI COM NAV STA LOC CURa DEVa PSAa PSDa OUR IND", policyref="http://privacy.msn.com/w3c/p3p.xml"
                              Date: Tue, 03 Nov 2009 11:50:08 GMT
                              Connection: close
                              Set-Cookie: _FS=mkt=-DE&ui=de-DE; domain=.bing.com; path=/
                              Set-Cookie: MUID=F7C26083DB3B4C208FFA1B629329E956; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/
                              Set-Cookie: OrigMUID=F7C26083DB3B4C208FFA1B629329E956%2c1307f89b261f4fd9aa1953178e44f7f3; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/
                              Set-Cookie: OVR=flt=0&DomainVertical=0&Cashback=cbtest4&MSCorp=kievfinal&GeoPerf=0; domain=.bing.com; path=/
                              Set-Cookie: SRCHD=D=968390&MS=968390&AF=NOFORM; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/
                              Set-Cookie: SRCHUID=V=2&GUID=48A93ECC44EC42BE98AB6ACFBCA3B3DB; expires=Thu, 03-Nov-2011 11:50:08 GMT; path=/
                              Set-Cookie: SRCHUSR=AUTOREDIR=0&GEOVAR=&DOB=20091103; expires=Thu, 03-Nov-2011 11:50:08 GMT; domain=.bing.com; path=/
                              
                              <html xmlns="http://www.w3.org/1999/xhtml" ><head><title>Submit Sitemap - Webmaster ToolsBing</title></head><body>Thanks for submitting your sitemap.</body></html>200
                              Muss noch umformatiert werden... da bin ich auch nicht so der Spezi drin. Am Ende steht jedenfalls "Thanks for submitting your sitemap" - GREAT - das hab ich gesucht, auch wenns noch nicht schön aussieht

                              PS: Hab den Code mit Tabs umformatiert, wenns recht ist...

                              Kommentar


                              • #30
                                Das was du wirklich gesucht hast siehst du bei deiner Ausgabe leider immer noch nicht - bzw. doch, den scheinbar wird der in der Funktion returnierte Statuscode noch nach dem Funktionsaufruf ausgegeben. Und das ist nunmal das einzige, was wirklich interessant ist.

                                Im Content können sie dir alles mögliche hinschreiben und das kann sich auch ändern, wenns den Machern von Bing grad so passt, was zur Folge haben kann, dass dein Script dir sagt, dass der Ping nicht geklappt hat, obwohl es in Wahrheit funktioniert hat.
                                Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                                Schön - etwas Geschichte kann ja nicht schaden.
                                Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                                Kommentar

                                Lädt...
                                X