Haciendo pings a webs
(QR Code)Algunas páginas soportan el envío de “pings”. ¿Qué es un ping?, en este caso se trata de un sistema mediante llamadas XML-RPC que permite decirle a un sitio Web que hemos actualizado alguna clase de contenido en nuestra pagina y por lo tanto debe prestarle atención.
Una llamada Ping tiene un funcionamiento similar al que ya vimos en los Trackbacks. Solo que aquí no se trata de indicar que un contenido concreto se cita en la pagina de destino, si no de informar que se ha actualizado el sitio a una pagina que lo procese, por ejemplo a Technorati para que actualice los posts que hemos publicado y con ello los posibles links.
En Technorati encontramos un ejemplo de cómo hacer una llamada ping .
Esta se compone de una cabecera http y una estructura XML siguiendo el estándar de XML-RPC donde le pasamos como valores el nombre de nuestro blog y su URL absoluta.
Cabecera HTTP
POST /rpc/ping HTTP/1.0 User-Agent: YOUR AGENT HERE Host: rpc.technorati.com Content-Type: text/xml Content-length: 250
Cuerpo del mensaje
<?xml version="1.0"?> <methodCall> <methodName>weblogUpdates.ping</methodName> <params> <param> <value>El cajon Desastre</value> </param> <param> <value>http://www.dubasdey.com/</value> </param> </params> </methodCall>
Como ya hable en el artículo sobre Trackbacks , cada línea de la cabecera debe ir separada por un salto de línea y para separar la cabecera del cuerpo se añade otro salto de línea adicional. Por lo demás simplemente es el envío de estos datos como “texto” al host y puerto requerido, en este caso rpc.technorati.com con el puerto http por defecto (80)
Código PHP de una petición ping
$xmlSend = "<?xml version=\"1.0\"?".">\r\n"; $xmlSend .= "<methodCall>\r\n"; $xmlSend .= " <methodName>weblogUpdates.ping</methodName>\r\n"; $xmlSend .= " <params>\r\n"; $xmlSend .= " <param>\r\n"; $xmlSend .= " <value>$BlogName</value>\r\n"; $xmlSend .= " </param>\r\n"; $xmlSend .= " <param>\r\n"; $xmlSend .= " <value>$BlogUrl</value>\r\n"; $xmlSend .= " </param>\r\n"; $xmlSend .= " </params>\r\n"; $xmlSend .= "</methodCall>\r\n"; $http_request = "POST ".$ping_path.$ping_query." HTTP/1.0\r\n"; $http_request .= "Host: ".$ping_host."\r\n"; $http_request .= "User-Agent: ".$agent."/".$version."\r\n"; $http_request .= "Content-Type: text/xml;\r\n"; $http_request .= "\r\n"; $http_request .= "$xmlSend"; $response=""; }
En este ejemplo podemos ver como primero se crea el la estructura XML de la llamada XML-RPC y se le añaden los datos, este paso lo realizo antes para poder determinar el tamaño de los datos a enviar, ya que este dato aparece en la cabecera.
Después se crea la cabecera, usando diferentes variables para los campos requeridos como en el ejemplo anteriormente visto de cabecera.
Y finalmente abro un socket con fsockopen, y envío la cadena.
En este ejemplo después de enviar los datos no cierro el socket y espero para ver si se me da alguna respuesta que capturo en la variable $response, esto puede ser muy util sobretodo para depuración.
Otras función que os puede ser útil para esta operación es parse_url que resuelve una cadena url y nos devuelve cada una de sus partes
Uso de parse_url
$ping_host = $pinguri_parts['host']; $ping_path = $pinguri_parts['path'];
Y con esto creo que ya esta indicado lo básico de los pings a webs. Por supuesto siempre podéis dejar comentarios.
Y preguntas o sugerencias a contacto@dubasdey.com
Nadie ha comentado (aun...)
No hay comentarios











