Bing - Sitemap Ping
Einklappen
X
-
der Header wird aber per "\r\n\r\n" getrennt meine ich irgendwie war das so... bin mir gerade nicht sicher
-
*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:
-
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:
-
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($fp, 128), $m) )
{
$status = intval( $m[1] );
break;
}
}
$res = fgets($fp, 1024);
echo "Antwort: ".$res."<br>";
fclose( $fp );
}
return( $status );
}
Weis jemand noch was darüber ?
Einen Kommentar schreiben:
-
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... betetZuletzt geändert von Proteus1982; 03.11.2009, 10:53.
Einen Kommentar schreiben:
-
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.
Hiernoch die gängigen Statuscodes im Fehlerfall und eine etwas verständlichere "Übersetzung" dazu
Einen Kommentar schreiben:
-
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:
-
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:
-
Das werde ich mir einmal ganz in Ruhe anschauen.
Vielen Dank nochmals. ;o)
Einen Kommentar schreiben:
-
PHP: curl_exec - Manual
das Beispiel...
bei setOpt muss man nur darauf dann achten: "CURLOPT_RETURNTRANSFER"
Gruß
Gunah
Einen Kommentar schreiben:
-
Mit CURL habe ich noch nie was gemacht.
Gibt es dafür einen fertigen Code Schnipsel oder einen Lösungsansatz?
Einen Kommentar schreiben:
-
Zitat von Jarez Beitrag anzeigenFür alle die das auch mal brauchen
Einen Kommentar schreiben:
-
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($fp, 128), $m) )
{
$status = intval( $m[1] );
break;
}
}
fclose( $fp );
}
return( $status );
}
Ich hätte da sonst noch morgen dran gesessen.
Einen Kommentar schreiben:
Einen Kommentar schreiben: