Ping an Blog-Verzeichnis senden

RageNo1

Erfahrenes Mitglied
Hallo,
ich habe meinen Blog bei einem Blog-Verzeichnis angemeldet.
Damit nun Updates schnell verarbeiten werden können gibt es die Möglichkeit einen Ping zu senden an: http://rpc.bloggerei.de/ping/

Ich nutze kein Wordpress was eine Ping Funktion wohl schon an Bord hat.

Kann mir jemand einen Tipp geben wie man so etwas realisiert mit PHP?
Via Google finde ich leider immer nur Ping-Listen und Tipps zu Wordpress.

Vielen Dank im vorraus,
gruß Ragey
 
Ich hab vor geraumer Zeit mal angefangen, den Proposal für Zend_Service_Linkback zu implementieren. Leider ist das noch nicht gut getestet. Ich hab es bei mir lokal mit meiner eigenen Blog-Software gegen Wordpress getestet. Das hatte funktioniert.

Vielleicht gibt es dir die eine oder andere Idee, wie du das für dich verwenden kannst. Viel Spaß damit.
 

Anhänge

Ich habe nun folgendes Script:

PHP:
<?php
 
$pinglist = array(
   "weblogs.com" => array(
      "host" => "rpc.bloggerei.de",
      "path" => "/ping/"
   )/*,
   "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>Seitentitel</value>";
$xmlrpcReq .= "</param>";
$xmlrpcReq .= "<param>";
$xmlrpcReq .= "<value>http://www.domain.com/rss/</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 );

	echo $pingresponse;
   }
}
 
?>


Irgendwie scheint es nicht so ganz zu funktionieren.
Ich habe den RSS Feed angegeben, ist das korrekt oder muss dort der Link zu dem neuen Beitrag rein?

Gruß Ragey
 
Das kommt darauf an, worauf der XMLRPC bei der anzupingenden Seite reagiert. Im Regelfall wird das der Beitrag sein. Ich habe jedenfalls noch keine Implementierung gesehen, bei der der RSS-Feed den Pingback zur Verfügung stellt.

Pingback funktioniert so:

Du schreibst einen Beitrag, in den du einen Link zu einem anderen Blog-Eintrag einfügst. Deine Blog-Software nimmt deinen Beitrag auseinander und schaut, bei welchen Links ein Pingback möglich ist, in dem die gepingte Seite gecrawled und nach dem Meta-Code

HTML:
<link rel="pingback" href="pingback server" />

gesucht wird. In dem steht als href die real anzupingende Adresse drin, die dann als Ziel für den Ping verwendet wird. Bekommst sie eine Antwort, trägt sie den Ping als erfolgreich in eine Tabelle ein.

Die gegenüberliegende Blog-Software registriert den Ping (über den Pingback-Service) und trägt bei sich ein, das ein Ping statt gefunden hat. In der Regel wird das als Kommentar zu dem angepingten Beitrag realisiert.

Du wirst also die Adresse zum Beitrag als regulären Link in deinen Beitrag einbauen und den Pingback-Service so implementieren müssen, wie in der Spec beschrieben steht.
 
Zurück