Hvis du har et hjemmestrikket blog system, som udgiver RSS feeds, er det tænkeligt du enten ikke pinger nogen services eller sidder og gør det manuelt. Dette er tidskrævende, men selvfølgelig nødvendigt for at få lidt flere besøgende. Jeg har selv tidligere siddet og pinget 3-4 forskellige services manuelt, men det gør jeg ikke længere, og synes da heller ikke du skal gøre det. Derfor får du her en funktion i PHP som kan gøre arbejdet for dig.
Funktionen følger XML-RPC specifikationen og bruger metoden weblogUpdates.ping. Har valgt ikke at bruge weblogUpdates.extendedPing, da flere services endnu ikke understøtter denne metode.
Funktionen
<?php
/*
* Application: Martin Blog Ping v0.5
* Author: Martin Nielsen mail[at]martin-nielsen[dot]com
* URL: http://martin-nielsen.com
* Released: April 03, 2008
* Description: Et script til at pinge blog indexes
* Usage: blogPing('http://dinblogurl.com','Blog navn');
*/
//indstillinger
$blogUrl='http://dinblogurl.dk'; //din blog url
$blogName='Din blog titel'; //blog titel
function blogPing($blogUrl,$blogName,$pingUrl) {
//xml
$xmlRequest ='<?xml version="1.0"?>'."n";
$xmlRequest.='<methodCall>'."n";
$xmlRequest.='<methodName>weblogUpdates.ping</methodName>'."n";
$xmlRequest.='<params>'."n";
$xmlRequest.='<param><value><string>'.htmlspecialchars($blogName).'</string></value></param>'."n";
$xmlRequest.='<param><value><string>' . htmlspecialchars($blogUrl) . '</string></value></param>'."n";
$xmlRequest.='</params>'."n";
$xmlRequest.='</methodCall>';
//curl kald
$cPing = curl_init(); //start curl
//curl options
curl_setopt($cPing,CURLOPT_URL,$pingUrl);
curl_setopt($cPing,CURLOPT_RETURNTRANSFER,1);
curl_setopt($cPing,CURLOPT_HTTPHEADER,array('Content-Type: text/xml'));
curl_setopt($cPing, CURLOPT_POST,1);
curl_setopt($cPing,CURLOPT_POSTFIELDS,$xmlRequest);
curl_setopt($cPing, CURLOPT_TIMEOUT, 20);
$responseContent = curl_exec($cPing); //udfør kald
$responseCode = curl_getinfo($cPing); //hent header info
curl_close($cPing); //luk curl
preg_match('#<name>message</name>s*<value>(s*<string>)?([^</]*)(</string>s*)?</value>#i', $responseContent, $msg);
preg_match('#<name>flerror</name>s*<value>(s*<boolean>)?([^</]*)(</boolean>s*)?</value>#i', $responseContent, $msg2);
if ($responseCode['http_code']!=200) {
return '<span style="color:red"><strong>FEJL:</strong> kunne ikke kontaktes</span><br />';
} elseif($msg2[2]==1) {
return '<span style="color:red"><strong>Der opstod en fejl:</strong> '.$msg[2].'</span><br />';
} else {
return ' - PING OK<br/>';
}
}?>
Brug
Her vil vi fx pinge overskrift.dk:
<?php echo blogPing($blogUrl,$blogName,'http://overskrift.dk/ping/');?>
Pinge flere services
Ved at lave en array med ping urls kan vi hurtigt pinge x antal ping services:
<?php
// Array med ping urls
$pingUrls = array(
'http://blogbot.dk/io/xml-rpc.php',
'http://overskrift.dk/ping/',
'http://rpc.twingly.com/',
'http://blogsearch.google.com/ping/RPC2'
);
//gennemløb arrayet og kald blogPing for hver pingUrl
foreach ($pingUrls as $pingUrl) {
echo 'Pinger: '.$pingUrl;
flush();
echo blogPing($blogUrl,$blogName,$pingUrl);
}
?>
Her pinger vi fx de fem nok vigtigste services for en dansk blogger
Liste over flere ping services
Anders Saugstrup har samlet en ganske fin liste over ping services som jeg vil gengive her i modificeret form (har frasorteret en håndfuld):
- http://blogbot.dk/io/xml-rpc.php
- http://rpc.weblogs.com/RPC2
- http://overskrift.dk/ping/
- http://rpc.twingly.com/
- http://blogsearch.google.com/ping/RPC2
- http://rpc.technorati.com/rpc/ping
- http://ping.feedburner.com
- http://api.moreover.com/ping
- http://api.my.yahoo.com/RPC2
- http://api.my.yahoo.com/rss/ping
- http://bblog.com/ping.php
- http://blog.goo.ne.jp/XMLRPC
- http://blogsearch.google.com/ping/RPC2
- http://ping.bitacoras.com
- http://ping.bloggers.jp/rpc/
- http://ping.myblog.jp
- http://ping.syndic8.com/xmlrpc.php
- http://ping.weblogalot.com/rpc.php
- http://pingoat.com/goat/RPC2
- http://rpc.icerocket.com:10080/
- http://rpc.pingomatic.com/
- http://topicexchange.com/RPC2
- http://www.bitacoles.net/ping.php
- http://www.blogdigger.com/RPC2
- http://www.blogpeople.net/servlet/weblogUpdates
- http://www.blogsnow.com/ping
- http://www.overskrift.dk/ping/
- http://www.popdex.com/addsite.php
- http://wasalive.com/ping/
- http://xping.pubsub.com/ping/
Funktionen er til fri afbenyttelse, og som altid hvis der er problemer så bare skriv. Funktionen kræver at cURL er installeret på serveren, men hvem ved kan være jeg strikker en god gammeldags fsocket løsning sammen på et tidspunkt.
Har i hvert fald lige tilføjet dig min RSS læser af den grund hehe