KodFeed Tam senlik :)

17Ara/091

PHP’de Wordpress ping olayı

Selam arkadaşlar,

Vakit bulunca wordpress'teki ping olayını yazacaktım fakat r10.net'ten Lacremel arkadaşımız bu kodlamayı yapmış ve paylaşmış. Kendisine paylaşımından dolayı teşekkür ederim.

Öncelikle pingleme ne işe yarar ondan bahsedelim. Birçok webmaster'ın sorunudur aslında arama motorlarının indexlemesi. Bu pingleme sayesinde yeni bir konu açtığınızda ping atarak arama motorlarının sitenize gelip indexleme yapmasını hızlandırırsınız. Öyleki wordpress'te bir yazı yazdığınızda yaklaşık 15 dakika içinde sayfanız indexlemiş olmaktadır.

  <?php
//Sonuc kodlari anlamlari : http://www.google.com/support/webmasters/bin/answer.py?hl=tr&answer=40132
set_time_limit(0);
$url = "http://www.lacremel.net/";
$site = "lacremel";
$pingliste = "pingler.txt";
if (!function_exists('xmlrpc_encode_request'))
{
    function xmlrpc_encode_request($yontem, $iki)
    {
        $cikti .= '<?xml version="1.0"?>';
        $cikti .= '<methodCall>';
        $cikti .= '<methodName>'.$yontem.'</methodName>';
        $cikti .= '<params>';
        $cikti .= '<param><value><string>'.$iki[0].'</string></value></param>';
        $cikti .= '<param><value><string>'.$iki[1].'</string></value></param>';
        $cikti .= '</params></methodCall>';
        return $cikti;
    }
}
function pingle($pingurl,$site,$url,$yontem) {
    $xmlrpc = xmlrpc_encode_request($yontem,array($site, $url));
    preg_match('@^(?:http://)?([^/]+)@i', $pingurl, $cikti);
    $pinghost = $cikti[1];
    $headers[] = "Host: ".$pinghost;
    $headers[] = "Content-type: text/xml";
    $headers[] = "User-Agent: LPS";
    $headers[] = "Content-length: ".strlen($xmlrpc) . "\r\n";
    $headers[] = $xmlrpc;
    $chi = curl_init();
    curl_setopt($chi,CURLOPT_URL,$pingurl);
    curl_setopt($chi,CURLOPT_RETURNTRANSFER,1);
    curl_setopt($chi, CURLOPT_CONNECTTIMEOUT, 4);
    curl_setopt($chi,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($chi,CURLOPT_CUSTOMREQUEST,'POST');
    $html = curl_exec( $chi );
    $sonuc = curl_getinfo($chi);
    echo "Gönderildi : ".$pinghost.", Sonuc : ".$sonuc["http_code"]."<br />";
    curl_close($chi);
    unset($headers);
}
$oku = file($pingliste);
$len = count($oku);
for ($i = 0; $i < $len; $i++) {
    $pingurl = trim($oku[$i]);
    pingle($pingurl,$site,$url,"weblogUpdates.ping");
    pingle($pingurl,$site,$url,"weblogUpdates.extendedPing");
}
?>

* pingler.txt dosyasina alt alta ping servislerini sıralıyorsunuz.
* Worpessdeki gibi 1 ping adresine 2 defa ping gönderiyor. 1 weblogUpdates.ping methodu ile birde weblogUpdates.extendedPing methodu ile.
* Ping yolladıktan sonra sonuc kod olarak cikmaktadir 0,200,404,500 gibi Sonuc kodlari anlamlari : HTTP durum kodları - Web Yöneticileri/Site Sahipleri Yardım 400 ve 500 ler bulunmayan sayfalar ve ulaşılamayan sunucuların kodlaridir bu kodu aldiginiz servisi pingler.txt den silersiniz
* Çalışması için sunucuda curl kütüphanesi yüklü olmalıdır.

Önemli NOT : Sürekli çalıştırmayın, yeni içerik eklemeden kesinlikle calıştırmayın. Servisler geldiginde yeni içerik bulamayınca daha sonraki pingleri dikkate almayacaktır.
örnek pingler.txt


http://api.moreover.com/ping

http://api.my.yahoo.com/rss/ping

http://blogsearch.google.com/ping/RPC2

http://ping.bitacoras.com

http://ping.feedburner.com

http://ping.syndic8.com/xmlrpc.php

http://rpc.blogrolling.com/pinger/

http://rpc.icerocket.com:10080/

http://rpc.technorati.com/rpc/ping

http://rpc.weblogs.com/RPC2

http://topicexchange.com/RPC2

http://www.blogdigger.com/RPC2

http://www.blogoole.com/ping/

http://www.popdex.com/addsite.php

http://www.wasalive.com/ping/

http://www.weblogues.com/RPC/

http://api.feedster.com/ping

http://ping.amagle.com/

http://ping.blo.gs/

http://ping.rootblog.com/rpc.php

http://ping.weblogalot.com/rpc.php

http://rcs.datashed.net/RPC2/

http://rpc.blogbuzzmachine.com/RPC2

http://rpc.newsgator.com/

http://www.blogoon.net/ping/

http://www.blogsnow.com/ping

http://www.blogstreet.com/xrbin/xmlrpc.cgi

http://www.lasermemory.com/lsrpc/

http://www.newsisfree.com/RPCCloud

http://www.snipsnap.org/RPC2

http://blogsearch.google.com/ping/RPC2

http://1470.net/api/ping

http://api.feedster.com/ping

http://api.moreover.com/RPC2

http://api.moreover.com/ping

http://api.my.yahoo.com/RPC2

http://api.my.yahoo.com/rss/ping

http://bblog.com/ping.php

http://bitacoras.net/ping

http://blog.goo.ne.jp/XMLRPC

http://blogdb.jp/xmlrpc

http://blogmatcher.com/u.php

http://bulkfeeds.net/rpc

http://coreblog.org/ping/

http://mod-pubsub.org/kn_apps/blogchatt

http://www.lasermemory.com/lsrpc/

http://ping.amagle.com/

http://ping.bitacoras.com

http://ping.blo.gs/

http://ping.bloggers.jp/rpc/

http://ping.cocolog-nifty.com/xmlrpc

http://ping.blogmura.jp/rpc/

http://ping.exblog.jp/xmlrpc

http://ping.feedburner.com

http://ping.myblog.jp

http://ping.rootblog.com/rpc.php

http://ping.syndic8.com/xmlrpc.php

http://ping.weblogalot.com/rpc.php

http://ping.weblogs.se/

http://pingoat.com/goat/RPC2

http://rcs.datashed.net/RPC2/

http://rpc.blogbuzzmachine.com/RPC2

http://rpc.blogrolling.com/pinger/

http://rpc.icerocket.com:10080/

http://rpc.newsgator.com/

http://rpc.pingomatic.com

http://rpc.technorati.com/rpc/ping

http://rpc.weblogs.com/RPC2

http://topicexchange.com/RPC2

http://trackback.bakeinu.jp/bakeping.php

http://www.a2b.cc/setloc/bp.a2b

http://www.bitacoles.net/ping.php

http://www.blogdigger.com/RPC2

http://www.blogoole.com/ping/

http://www.blogoon.net/ping/

http://www.blogpeople.net/servlet/weblogUpdates

http://www.blogroots.com/tb_populi.blog?id=1

http://www.blogshares.com/rpc.php

http://www.blogsnow.com/ping

http://www.blogstreet.com/xrbin/xmlrpc.cgi

http://www.mod-pubsub.org/kn_apps/blogchatter/ping.php

http://www.newsisfree.com/RPCCloud

http://www.newsisfree.com/xmlrpctest.php

http://www.popdex.com/addsite.php

http://www.snipsnap.org/RPC2

http://www.weblogues.com/RPC/

http://xmlrpc.blogg.de

http://xping.pubsub.com/ping/

Aşağıda ise @andyou arkadaşımızın paylaştığı file_open ile yaptığı örnek bulunmakta.

   <?php
$url = "http://".$_SERVER['HTTP_HOST'];

function pingGoogleSitemap ( $rootUrl )
{
    $fileName = "http://www.google.com/webmasters/sitemaps/ping?sitemap=" .urlencode("http://www.hit2.org/rssprogram.php");

    $url = parse_url($fileName);
    if (!isset($url["port"])) $url["port"] = 80;
    if (!isset($url["path"])) $url["path"] = "/";

    $fp = @fsockopen($url["host"],
                     $url["port"],
                     &$errno, &$errstr, 30);

    if ($fp)
    {
        $head = "";
        $httpRequest = "HEAD ". $url["path"] ."?"
                     .$url["query"] ." HTTP/1.1\r\n"
                     ."Host: ". $url["host"] ."\r\n"
                     ."Connection: close\r\n\r\n";
        fputs($fp, $httpRequest);
        while(!feof($fp)) $head .= fgets($fp, 1024);
        fclose($fp);
        return $head;
    }
    return "ERROR";
}
pingGoogleSitemap( $url );
?>

Konuya aşağıdaki adresten ulaşabilirsiniz.
Wordpress usulü ping servislerine ping yollamak PHP kod

Bu yazıyı beğendiniz mi?

RSS Kaynağımıza abone olun!

Hakkında Ramazan ULUÇAY

Web Developer
Etiketler: Yorum gönder.