Tipps für Selbermacher
Ping!
Sie aktualisieren häufig eine oder mehrere Ihrer Webseiten und möchten dies
möglichen Besuchern unaufdringlich mitteilen? Wer an aktuellen Informationen zu einer Website oder
zu einem Thema interessiert ist, nimmt Ihr Angebot womöglich in eine Linkliste auf, die er
über einen Informationsdienst auf Aktualität überprüfen lässt. Das betrifft in
erster Linie die sogenannten Weblogs. Aber auch Anbieter, die nicht täglich, sondern
wöchentlich oder monatlich Neues zu bieten haben, können von solchen Aggregatoren
profitieren.
Beispiele für Updatedienste, die Meldungen zu Aktualisierungen entgegen nehmen, sind blogg.de, blo.gs, BlogRolling, Technorati, Twingly und Weblogs.
Dieser Artikel soll Ihnen vermitteln, was notwendig ist, um Updatedienste (Aggregatoren) zu informieren, wenn Sie Neuigkeiten parat haben.
Die Methode, Änderungen auf Webseiten mitzuteilen, nennt man »Pingen«, einen Ping absetzen oder abschicken. Dazu sendet man nach der Aktualisierung der eigenen Webseiten eine Nachricht im definierten Format an einen oder an mehrere Updatedienste. Dies kann man manuell erledigen, indem man nach jeder Änderung die Formulare ausgewählter Aggregatoren ausfüllt. Als Beispiel möchte ich die Updateseite des Dienstes Blogrolling anführen.
Automatisch lässt sich diese stets gleiche Aufgabe aber auch erledigen. In den folgenden Beispielen verwende ich die weit verbreitete Skriptsprache PHP zur Verdeutlichung. Um die Skriptsequenzen direkt verwenden zu können, benötigen Sie einen Webserver, der diese Sprache umsetzen kann. Wenn Sie etwa ihre Webseiten bereits über ein PHP-Script aktualisieren, können Sie im Anschluss meine Kodefragmente zum »Pingen« einbauen. Beachten Sie aber bitte, dass der Ablauf ihres Gesamtscriptes durch die Pingsequenz mehr oder weniger deutlich verzögert werden kann, je nachdem wie lange der kontaktierte Hostrechner braucht, um Ihre Nachricht zu verarbeiten.
Einfacher Ping
Sie benötigen dazu folgende Daten: den Titel ihrer aktualisierten Webseite und deren URL, also die Dateiadresse beginnend mit http://; außerdem den Hostrechner, der Ihren Ping empfangen soll, und den Pfad des Unterverzeichnisses auf diesem Hostrechner, in dem der Ping verarbeitet wird.
Ein Beispiel für den Pinghost eines Updateservers ist xmlrpc.blogg.de mit dem Unterverzeichnis /.
<?php
$xmlrpcReq = "<?xml version=\"1.0\"?>";
$xmlrpcReq .= "<methodCall>";
$xmlrpcReq .= "<methodName>weblogUpdates.ping</methodName>";
$xmlrpcReq .= "<params>";
$xmlrpcReq .= "<param>";
$xmlrpcReq .= "<value>IHR SEITENTITEL</value>";
$xmlrpcReq .= "</param>";
$xmlrpcReq .= "<param>";
$xmlrpcReq .= "<value>IHR URL</value>";
$xmlrpcReq .= "</param>";
$xmlrpcReq .= "</params>";
$xmlrpcReq .= "</methodCall>";
$xmlrpcLength = strlen( $xmlrpcReq );
$httpReq = "POST HOSTPFAD HTTP/1.0\r\n";
$httpReq .= "Host: HOSTRECHNER\r\n";
$httpReq .= "Content-Type: text/xml\r\n";
$httpReq .= "Content-length: $xmlrpcLength\r\n\r\n";
$httpReq .= "$xmlrpcReq\r\n";
if ( $pinghandle = @fsockopen( "HOSTRECHNER", 80 ) )
{
@fputs( $pinghandle, $httpReq );
while ( ! feof( $pinghandle ) )
$pingresponse .= @fgets( $pinghandle, 128 );
@fclose( $pinghandle );
}
?>
An die Stellen der Platzhalter setzen Sie die oberhalb des Quellkodes erklärten Begriffe ein.
Mehrfach pingen
Nur einen einzigen Dienst zu informieren, ist nicht unbedingt erfolgreich. Zwar sammeln einige Updatedienste auch die Meldungen anderer Aggregatoren ein, aber vor allem wenn sehr viele Meldungen in Folge eingehen, geht eine einzelne Meldung oftmals unter. Es empfiehlt sich also, Pings an mehrere Hostrechner abzusenden. Die Erfolgsrate ist dann einfach höher.
Statt die oben aufgeführte PHP-Sequenz einfach mehrfach nacheinander einzufügen, empfehle ich ein leicht abgewandeltes Kodefragment, in dem eine Liste von Updatediensten schnell und fehlerlos den eigenen Bedürfnissen und Verfügbarkeiten anzupassen. Das folgende Skript sendet Pings an alle oben aufgeführten Updatedienste:
<?php
$pinglist = array(
"weblogs.com" => array(
"host" => "rpc.weblogs.com",
"path" => "/RPC2"
),
"blogrolling.com" => array(
"host" => "rpc.blogrolling.com",
"path" => "/pinger/"
),
"blo.gs" => array(
"host" => "ping.blo.gs",
"path" => "/"
),
"technorati.com" => array(
"host" => "rpc.technorati.com",
"path" => "/rpc/ping"
),
"blogg.de" => array(
"host" => "xmlrpc.blogg.de",
"path" => "/"
),
"twingly.com" => array(
"host" => "rpc.twingly.com",
"path" => "/"
)
);
$xmlrpcReq = "<?xml version=\"1.0\"?>";
$xmlrpcReq .= "<methodCall>";
$xmlrpcReq .= "<methodName>weblogUpdates.ping</methodName>";
$xmlrpcReq .= "<params>";
$xmlrpcReq .= "<param>";
$xmlrpcReq .= "<value>IHR SEITENTITEL</value>";
$xmlrpcReq .= "</param>";
$xmlrpcReq .= "<param>";
$xmlrpcReq .= "<value>IHR URL</value>";
$xmlrpcReq .= "</param>";
$xmlrpcReq .= "</params>";
$xmlrpcReq .= "</methodCall>";
$xmlrpcLength = strlen( $xmlrpcReq );
foreach ( $pinglist as $ping )
{
$httpReq = "POST " . $ping['path'] . " HTTP/1.0\r\n";
$httpReq .= "Host: " . $ping['host'] . "\r\n";
$httpReq .= "Content-Type: text/xml\r\n";
$httpReq .= "Content-length: $xmlrpcLength\r\n\r\n";
$httpReq .= "$xmlrpcReq\r\n";
if ( $pinghandle = @fsockopen( $ping['host'], 80 ) )
{
@fputs( $pinghandle, $httpReq );
while ( ! feof( $pinghandle ) )
$pingresponse .= @fgets( $pinghandle, 128 );
@fclose( $pinghandle );
}
}
?>
Dienste die nicht benachrichtigt werden sollen oder die womöglich nicht mehr verfügbar sind, kann man einfach aus der mit $pinglist benannten Liste streichen, neue Dienste können ebenso einfach hinzugefügt werden.




