Hacer ping a buscadores en php

5

Una manera sencilla de facilitar el trabajo de los buscadores, es actualizar el sitemap y realizar un ping cuando actualizamos o modificamos el contenido de nuestra web. En el caso de utilizar wordpress, tenemos plugins específicos que realizan esta función.

Pero vamos a ver un sencillo método que podemos incluir en nuestras propias paginas web desarrolladas en php.

El script consta de dos partes:

La primera, es la encargada de generar nuestro fichero sitemap.xml, y se ejecutara cuando modifiquemos el contenido de la web desde el panel de control (por ejemplo, insertamos, editamos o eliminamos una noticia).

La segunda, se encarga de realizar los ping a los buscadores, indicando la ruta del fichero sitemap.xml.

Generación del sitemap.xml

// Cargamos la clase de acceso a la BD
@include_once("include/MySQL.class.php");

// Cargamos el ficheros con los datos de configuracion
@include_once("include/config.inc.php");

// Creamos objeto Base de datos
$BD= & new MySQL($servidor,$usuario,$pass,$bd);		

$BD->conectarBD();

// Consulta a la Base de Datos
$res=$BD->consultaSQL("SELECT * FROM noticias ORDER BY fecha DESC LIMIT 10"); 

while ($fila=$res->extraeFila()){
	$noticias[]=$fila;
}

// Instanciamos las etiquetas y valores en una sola variable
$sitemap ="< ?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n";
$sitemap .="<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">\r\n";
$sitemap .="<url>\r\n";
$sitemap .="<loc>http://www.midominio.com</loc>\r\n";
$sitemap .="<changefreq>daily</changefreq>\r\n";
$sitemap .="<lastmod>".$noticias[0]['fecha']."</lastmod>\r\n";
$sitemap .="<priority>1.0</priority>\r\n";
$sitemap .="</url>\r\n";

foreach($noticias as $noticia){
	$sitemap .="<item>\r\n";
	$sitemap .="<url>\r\n";
	$sitemap .="<loc>http://www.midominio.com/noticias/".$noticia['id']."</loc>\r\n";
	$sitemap .="<lastmod>".$noticia['fecha']."</lastmod>\r\n";
	$sitemap .="<priority>0.8</priority>\r\n";
	$sitemap .="</url>\r\n";
	$sitemap .="</item>\r\n";
}
$sitemap .="</urlset>\r\n";

//escribimos el archivo sitemap.xml en el directorio raíz
$fichero= fopen("sitemap.xml" , "w");

// escribimos la variable creada en el fichero sitemap.xml
fwrite($fichero, $sitemap); 

// cerramos el fichero sitemap.xml
fclose($fichero);

$BD->cierraBD();

Realizar ping a los buscadores
Hacemos una llamada a los servicios de ping de los buscadores, indicándole la ruta del sitemap.xml de nuestro dominio (cambiar http://www.midominio.com/sitemap.xml por nuestra propia ruta).

//Hacemos un ping a las las url de los buscadores para avisar Google, Yahoo y Ask
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://search.yahooapis.com/SiteExplorerService/V1/ping?sitemap=http://www.midominio.com/sitemap.xml');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/webmasters/sitemaps/ping?sitemap=http://www.midominio.com/sitemap.xml');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec();
curl_close($ch); 				

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://submissions.ask.com/ping?sitemap=http%3A//www.midominio.com/sitemap.xml');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec();
curl_close($ch);

Con este código daremos un toque a los principales buscadores, indicándoles que se ha modificado nuestra web, y dandole la ruta del sitemap.xml para facilitarle la indexación de los nuevos contenidos.

Contenidos Relacionados

5 Respuestas a “Hacer ping a buscadores en php”

  1. [...] me surgió un problema mientras estaba preparando la entra anterior, “Hacer ping a buscadores en php“. Resulta que al intentar previsualizar un post, siempre me mostraba el error “Service [...]

  2. Judavi dice:

    Excelente post, me sirvió mucho la parte del final. Cuando haces el ping.
    Gracias por compartir la información, hasta otra :)

  3. issux dice:

    Buenas.

    Gracias, me alegro que te haya sido util.

    Saludos.

  4. Isaac dice:

    Hola, está muy bueno este código php, podrías decirme qué debo colocar en la clase MySQL.class.php puesto que no lo he logrado hacer funcionar. Gracias de antemano=)

  5. issux dice:

    Buenas.

    Es una clase que actua como interfaz de las llamadas a las funciones php de conexion con la base de datos mysql. No te preocupes, sustituye las funciones del tipo $BD->funcion por su funcion equivalente en php y listo.

    Saludos.

  6. Muy bueno lo del ping, lo incorporaré !!
    Gracias

Responder