Til Top

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.

Hent eksempel

kommentarer

Skrevet d. 30. April 2008 06:48 af Kim Andersen
Bruger billede 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.
Skrevet d. 30. April 2008 06:48 af Martin
Bruger billede 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
Skrevet d. 30. April 2008 06:48 af Martin
Bruger billede 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 :D
Skrevet d. 30. April 2008 09:19 af Vadskær
Bruger billede 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.
Skrevet d. 30. April 2008 09:19 af Vadskær
Bruger billede 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.
Skrevet d. 1. Maj 2008 13:10 af Jonas
Bruger billede 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?
Skrevet d. 1. Maj 2008 15:02 af Martin
Bruger billede Hej Jonas,
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
Skrevet d. 2. Maj 2008 10:53 af Jonas
Bruger billede Ok, det havde jeg ikke lige gennemskuet, tak for hjælpen
Skrevet d. 19. Maj 2008 12:08 af Martin
Bruger billede 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...
Skrevet d. 6. August 2008 13:27 af Martin Nielsen
Bruger billede 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.
Skrevet d. 6. August 2008 13:42 af Morten
Bruger billede 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
Skrevet d. 6. August 2008 13:53 af Martin Nielsen
Bruger billede 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 :D - om det så er kvalitetsbesøg er jo så en helt anden side af sagen
Skrevet d. 6. August 2008 14:00 af steffmeister
Bruger billede 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
Skrevet d. 18. Februar 2009 07:02 af Vadskær
Bruger billede 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.
Skrevet d. 6. Juli 2009 03:03 af Mikkel Mikjær Christensen
Bruger billede Hvad bruger du til at fremvise php kode i? Er det der nemt kan krølles sammen med Wordpress?
Skrevet d. 6. Juli 2009 13:51 af Martin Nielsen
Bruger billede @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/
Skrevet d. 6. September 2009 13:50 af Martin Nielsen
Bruger billede Download Link fixed - en fejl fra skiftning af blog platform

skriv kommentar

Felter markeret med gult og * er påkrævet







Sikkerheds kode


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)