Datum: 08.10.2008
, Kategorie:
PHP
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.