Ny version med fsocket support: PHP Blog Ping Version 1.0 - Nu med fsocket løsning
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
| Kopier til udklipsholder | Vis uden linie # | |
|---|---|
| 01 | <?php |
| 02 | /* |
| 03 | * Application: Martin Blog Ping v0.5 |
| 04 | * Author: Martin Nielsen mail[at]martin-nielsen[dot]com |
| 05 | * URL: http://martin-nielsen.com |
| 06 | * Released: April 03, 2008 |
| 07 | * Description: Et script til at pinge blog indexes |
| 08 | * Usage: blogPing('http://dinblogurl.com','Blog navn'); |
| 09 | */ |
| 10 | //indstillinger |
| 11 | $blogUrl='http://dinblogurl.dk'; //din blog url |
| 12 | $blogName='Din blog titel'; //blog titel |
| 13 | function blogPing($blogUrl,$blogName,$pingUrl) { |
| 14 | //xml |
| 15 | $xmlRequest ='<?xml version="1.0"?>'."n"; |
| 16 | $xmlRequest.='<methodCall>'."n"; |
| 17 | $xmlRequest.='<methodName>weblogUpdates.ping</methodName>'."n"; |
| 18 | $xmlRequest.='<params>'."n"; |
| 19 | $xmlRequest.='<param><value><string>'.htmlspecialchars($blogName).'</string></value></param>'."n"; |
| 20 | $xmlRequest.='<param><value><string>' . htmlspecialchars($blogUrl) . '</string></value></param>'."n"; |
| 21 | $xmlRequest.='</params>'."n"; |
| 22 | $xmlRequest.='</methodCall>'; |
| 23 | //curl kald |
| 24 | $cPing = curl_init(); //start curl |
| 25 | //curl options |
| 26 | curl_setopt($cPing,CURLOPT_URL,$pingUrl); |
| 27 | curl_setopt($cPing,CURLOPT_RETURNTRANSFER,1); |
| 28 | curl_setopt($cPing,CURLOPT_HTTPHEADER,array('Content-Type: text/xml')); |
| 29 | curl_setopt($cPing, CURLOPT_POST,1); |
| 30 | curl_setopt($cPing,CURLOPT_POSTFIELDS,$xmlRequest); |
| 31 | curl_setopt($cPing, CURLOPT_TIMEOUT, 20); |
| 32 | $responseContent = curl_exec($cPing); //udfør kald |
| 33 | $responseCode = curl_getinfo($cPing); //hent header info |
| 34 | curl_close($cPing); //luk curl |
| 35 | preg_match('#<name>message</name>s*<value>(s*<string>)?([^</]*)(</string>s*)?</value&g t;#i', $responseContent, $msg); |
| 36 | preg_match('#<name>flerror</name>s*<value>(s*<boolean>)?([^</]*)(</boolean>s*)?</value >#i', $responseContent, $msg2); |
| 37 | if($responseCode['http_code']!=200) { |
| 38 | return <span style="color:red"><strong>FEJL:</strong> kunne ikke kontaktes</span> |
| 39 | ; |
| 40 | } elseif($msg2[2]==1) { |
| 41 | return '<span style="color:red"><strong>Der opstod en fejl:</strong> '.$msg[2].</span> |
| 42 | ; |
| 43 | } else{ |
| 44 | return ' - PING OK<br/>'; |
| 45 | } |
| 46 | }?> |
Brug
Her vil vi fx pinge overskrift.dk:
| Kopier til udklipsholder | Vis uden linie # | |
|---|---|
| 01 | <?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:
| Kopier til udklipsholder | Vis uden linie # | |
|---|---|
| 01 | <?php |
| 02 | // Array med ping urls |
| 03 | $pingUrls = array( |
| 04 | 'http://blogbot.dk/io/xml-rpc.php', |
| 05 | 'http://overskrift.dk/ping/', |
| 06 | 'http://rpc.twingly.com/', |
| 07 | 'http://blogsearch.google.com/ping/RPC2' |
| 08 | ); |
| 09 | //gennemløb arrayet og kald blogPing for hver pingUrl |
| 10 | foreach ($pingUrls as $pingUrl) { |
| 11 | echo 'Pinger: '.$pingUrl; |
| 12 | flush(); |
| 13 | echo blogPing($blogUrl,$blogName,$pingUrl); |
| 14 | } |
| 15 | ?> |
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.
kommentarer
Super artikel.
Så må jeg hellere komme i gang med at skrive lidt på min blog, når nu læser-skaren er blevet forøget.
I en lign. diskussion på Saugstrups blog kom vi frem til
| Kopier til udklipsholder | Vis uden linie # | |
|---|---|
| 01 | http://blogbot.dk/io/xml-rpc.php |
| 02 | http://overskrift.dk/ping/ |
| 03 | http://rpc.twingly.com/ |
| 04 | http://blogsearch.google.com/ping/RPC2 |
Var de vigtigste for en dansk blogger, dvs dem som jeg har taget med i eksemplet omkring at pinge flere services.
Mvh
Martin
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...
Link til seneste blogindlæg: En hurtig anbefaling
Men ja ja det giver da nogle hits :D - om det så er kvalitetsbesøg er jo så en helt anden side af sagen
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
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
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
Link til seneste blogindlæg: Anmeldelse af Inglourious Basterds - Et Tarantino mesterværk
skriv kommentar
Felter markeret med gult og * er påkrævet
Pingbacks
Hvis du linker til en af mine blog artikler fra et blogsystem der udsender pings vil du få et gratis do-follow link fra mig, du kna også twitte om en post og få et link til din twitter profil (Jeg forbeholder mig dog retten til at slette eller nofollow spam :P)











