Bei unserem News-Script verwenden wir die PEAR-Klasse XML_RPC, um Änderungen an die Ping-Dienste zu melden.
<?php
// Klasse laden
require_once 'XML/RPC.php';
// Liste mit Ping-Diensten
$list = array(
'ping.syndic8.com/xmlrpc.php',
'blogsearch.google.com/ping/RPC2',
'rpc.technorati.com/rpc/ping',
'rpc.weblogs.com/RPC2'
);
// URL des Weblogs
$baseURL = 'http://www.example.com/blog/';
// Name des Weblogs
$blogName = 'Mein Weblog';
// Die Liste der Ping-Dienste durchgehen und Daten senden
foreach ($list AS $key => $value)
{
$value = trim($value);
// Ping-Dienst-URL in Host und Pfad trennen
$pingHost = substr($value, 0, strpos($value, '/'));
$pingPath = substr($value, strpos($value, '/'));
// Blog-Name und URL als Prameter setzen
$params = array(
new XML_RPC_Value($blogName, 'string'),
new XML_RPC_Value($baseURL, 'string')
);
/**
* weblogUpdates.ping als Modus auswählen. Alternativ könnte man auch
* weblogUpdates.extendedPing verwenden und kann dann noch weitere Infos
* übertragen.
*/
$msg = new XML_RPC_Message('weblogUpdates.ping', $params);
// Pfad und Host setzen
$cli = new XML_RPC_Client($pingPath, $pingHost);
// Daten übertragen
$resp = $cli->send($msg);
// Wenn ein Ping fehlgeschlagen ist, anzeigen welcher
if (!$resp) {
echo '<br />Ping fehlgeschlagen: ' . $value . ' -> ' . $cli->errstr;
continue;
}
if (!$resp->faultCode()) {
/**
* Wenn kein Fehlercode zurückgesendet wurde, hat vermutlich
* alles geklappt
*/
$val = $resp->value();
echo '<br />Ping erfolgreich: ' . $value;
} else {
// Fehler anzeigen
echo '<br />Ping fehlgeschlagen: ' . $value . ' -> ' . $resp->faultCode()
. ' -> ' . $resp->faultString();
}
}
?>
War diese Anleitung hilfreich? Über Hinweise oder Anmerkungen würden wir uns freuen.
An die Pingdienste wird dann bei jeder neuen Veröffentlichung das gleiche übermittelt?
Also der Name des Blogs und die URL des Blogs?
[code]
new XML_RPC_Value($blogName, 'string'),
new XML_RPC_Value($baseURL, 'string')
[/code]