Ver Mensaje Individual
  #13 (permalink)  
Antiguo 04/03/2004, 14:25
josemi
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, intentare hacerlo corto.

Todas las peticiones web usan el protocolo HTTP. Este protocolo define uno mensajes de texto. Estos mensajes estan compuestos por unas cabeceras y un cuerpo. En las cabeceras se especifican datos como la accion a realizar, tipo de mensaje, codificacion del mensaje, estado, etc. Y el cuerpo suele ser pues el HTML de una pagina, los datos binarios de una imagen, etc. La comunicacion navegador-servidor web es un intercambio de esos mensajes.

Tu link checker tiene que simular un navegador. Para eso debes implementar ese intercambio de mensajes (directamente en HTTP o mediante de cURL).

Te comento con fsockopen(), que seria lo mas dificil. Con fsockopen() primero tienes que mirar si se ha establecido el socket con el servidor remoto. Si no recuerdo mal, si devuelve false es que ha habido un error en la conexion. Este error puede ser que el servidor (o dominio) que le has indicado no exista o no responda. Si se conecta, entonces tienes que implementar los mensajes HTTP para leer la pagina. El mensaje normal es el GET con la ruta de la pagina. Exista esa pagina o no, el socket te devuelve un mensaje. Dentro de ese mensaje vendra la informacion de estado. Si es un error 404, es que esa pagina no existe; si es un 401 es que no tienes permisos para acceder; si es un 302 es que te quiere redireccionar a otra URL; si es un 200 es que existe y en el cuerpo viene el HTML; y asi con los codigos de estado. Tu tienes leer esa informacion de estado y determinar la siguiente accion. Si es el 200, cogerias el cuerpo del mensaje y "extraerias" los links. Luego repeterias el bucle con esos links.

En http://www.w3.org/Protocols/rfc2616/rfc2616.html tienes informacion sobre HTTP.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.