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.txthttp://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
07 Ağustos 2010, 20:18
eyv. teşekkürler