Ny version med fsocket support: PHP Blog Ping v1.0
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
<?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:
1 |
<?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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?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.
Nu kører ejg selv med WordPress, ligesom størstedelen af alle bloggere, men en utrolig brugbar artikel hvis man en dag skal bruge noget andet, og som du siger, ikke har lyst til at pinge manuelt.
Super artikel.
Glad for det kan bruges, og glad for at se en anden som kører med hjemmestrikket system Har i hvert fald lige tilføjet dig min RSS læser af den grund hehe
Ja selvbyg er jo ikke den mest udbredte form for blog-software derude længere, af gode grunde og nogen gange får jeg da også bare lyst til at skrotte det hele og installere en wordpress, men friheden vinder alligevel altid til sidst 😀
Jeg kører mere og mere hjemmestrikket blog, så det her er guf. Tusind tak for det. Lækkert at du deler ud af det.
Det kan bestemt bruges. Sparer mig for meget tid.
Så må jeg hellere komme i gang med at skrive lidt på min blog, når nu læser-skaren er blevet forøget.
Det er super det der, jeg arbejder selv på at lave en blog, og vil helt klart bruge denne funktion, er der nogle ping services du vil anbefale mere end andre?
Hej Jonas,
I en lign. diskussion på Saugstrups blog kom vi frem til
Var de vigtigste for en dansk blogger, dvs dem som jeg har taget med i eksemplet omkring at pinge flere services.
Mvh
Martin
Ok, det havde jeg ikke lige gennemskuet, tak for hjælpen
Hej Steff, og velkommen til,
Wordpress er der i hvert fald indbygget ping service i, lige en engelsk guide jeg fandt da jeg ikke selv er wordpress bruger:
Log in to your WordPress weblog.
Select "Options" from the top menu.
Select "Writing" from the sub-menu.
The last option on the page is "Update Services." Add ping server as a new line within the Update Services text box.
Ved ikke med blogger…
Undskyld til jer der bliver ved med at få en mail fra mig på denne post – spam bots har tilsyneladende fundet vej til denne post – og får ca en spam kommentar pr dag.
Ha… Jeg havde undret mig. Synes da ellers, at dit anti-spam-check er udmærket. Du må i gang med noget mere kryptisk. Så ved du, hvad du kan få weekenden til at gå med
Link til seneste blogindlæg: En hurtig anbefaling
Hehe, ja det fungerer sådan set også fint nok, jeg tror næsten det er manuelt spam jeg får – det virker underligt at den ikke bare spammer igennem hvis det var en der decodede billede valideringen.
Men ja ja det giver da nogle hits 😀 – om det så er kvalitetsbesøg er jo så en helt anden side af sagen
hey folkens,
jeg har lidt forskellige blogs, nogle på blogger og nogle på self-hosted wordpress… pinger de automatisk, eller kan jeg ligge noget script ind i en widget eller noget for at sikre at de vigtigste services bliver pinget?
/steffmeister
Ha ha… De robotter har stadig fat i den lange ende, Martin. Dit spam-filter har da ellers holdt dem fra døren længe.
Du kan bruge min yderst primitive løsning med to tal. Jeg har – 7-9-13 – endnu ingen spam-problemer.
Link til seneste blogindlæg: Pause
Hvad bruger du til at fremvise php kode i? Er det der nemt kan krølles sammen med WordPress?
@Mikkel
Det er en hjemmestrikket løsningen mellem PHP, Mootools og ZeroClipboard (js) men ideen kommer fra SyntaxHighlighter (http://code.google.com/p/syntaxhighlighter/)
Men ser ud til der er et WordPress plugin som gør ca det samme:
http://wordpress.org/extend/plugins/syntaxhighlighter/
Link til seneste blogindlæg: Anmeldelse af Ice Age: Dawn of the Dinosaurs
Download Link fixed – en fejl fra skiftning af blog platform
Link til seneste blogindlæg: Anmeldelse af Inglourious Basterds – Et Tarantino mesterværk
Pingback: PHP Blog Ping Version 1.0 - Nu med fsocket løsning | Martin Nielsens nørdede tanker