15 Mart 2008 Cumartesi

Google Sitemaps'i pinglemek icin PHP Fonksiyonu

Yabancıların SEO konusunda önde olduklarının göstergelerinden biri sanırım. Bu fonksiyonu yazan arkadaş 2005 yılında paylaşmış. Açıkçası Wordpress ve Blogger'i sonradan kullanmış biri olarak pingleme konusunu hiç düşünmemiştim. Kodu yazan kişide , tüm pratik kodlar gibi ihtiyaçtan mütevellit yazmış. Günlük ve haftalık aldığı yedekler alırken kullandığı scriptin sonuna eklediği kodlarla Google Sitemaps hizmetine ait serveri pingleyerek Google Bot'u davet ediyor.

/**
* @copyright Copyright © 2005, J de Silva
**/
function pingGoogleSitemaps( $url_xml ) {
$status = 0;
$google = 'www.google.com';
if( $fp=@fsockopen($google, 80) ) {
$req = 'GET /webmasters/sitemaps/ping?sitemap=' . urlencode( $url_xml ) . " HTTP/1.1\r\n" .
"Host: $google\r\n" .
"User-Agent: Mozilla/5.0 (compatible; " . PHP_OS . ") PHP/" . PHP_VERSION . "\r\n" .
"Connection: Close\r\n\r\n";
fwrite($fp, $req);
while(!feof($fp)) {
if( @preg_match('~^HTTP/\d\.\d (\d+)~i', fgets($fp, 128), $m) ) {
$status = intval($m[1]);
break;
}
}
fclose($fp);
}
return($status);
}
Örnek Kullanımı;
pingGoogleSitemaps('http://www.turkwm.com/sitemap.xml');
// Adres yerine kendi sitemap adresinizi yazmayı ihmal etmeyin.
Daha uygulamaya yönelik bir kullanımla açıklamak gerekirse;
pingGoogleSitemaps fonksiyonuna ait kodları ping.php olarak kaydedip sitenize yükleyin. Yeni yazıları yada içeriği girdiğiniz form sayfasına tıkladığınızda kayıt işlemini yapan sayfaya yönlenirsiniz. Yani yazmış olduğunuz makalenin veritabanına yüklendiği dosyadan bahsediyoruz. Bu dosyanın isminide veritabani-kayit.php dersek, örnek uygulamamız şöyle olur.
// Dosya ismi: veritabani-kayit.php
// ====================================

// Formdan gelen yazıyı alıp veritabanına kayıt eden kodlar
// ...

/*
Yazı siteye eklendiğinde sitemapiniz yenilenmiş olacak. İşte burda fonksiyonu devreye sokacağız.
Önce fonksiyonumuzun olduğu ping.php include ile çağırıyoruz. Sonrada Google Sitemapsi pingliyoruz.
*/
include 'ping.php';
if( 200 === ($status=pingGoogleSitemaps('http://www.turkwm.com/sitemap.xml')) )
report( "Google Sitemaps Pinglendi.\r\n\r\nDurum Kodu: $status.", REPORT_MODE );
else
report( "Google Sitemaps Pinglenemedi.\r\n\r\nDurum Kodu: $status.", REPORT_MODE );

// Script Sonu.
Google Sitemaps'i pinglediğimizde siteniz Google Bot'un ziyaret edeceği adreslere ekleniyor. Normalden daha kısa sürede indexlenmiş olacaksınız.