Bonjour,

Afin de vérifier si tous les liens de mon site son valide ou pas, j'utilise cette fonction.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
function checkurl($url){
    // vérification du protocole HTTP
    if (!eregi("^http://", $url)) {
        return FALSE;
    }
    $details = parse_url($url);
    // vérification du port 80 lié au protocole HTTP
    if (!isset($details['port'])) {
        $details['port'] = "80";
    }
    // vérification du chemin
    if (!isset($details['path'])) {
        $details['path'] = "/";
    }
    // vérification de l'adresse du serveur
    if (!ereg("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+", $details['host'])){
        $details['host'] = gethostbyname($details['host']);
    }
    // ouverture d'une connexion vers le serveur
    if ($sock = fsockopen( $details['host'], $details['port'], &$numero_erreur, &$texte_erreur)){
        $requete = "GET ".$details['path']." HTTP/1.1\r\n";
        $requete .= "Host: ".$details['host']."\r\n\r\n";
        // envoie d'une requête HTTP GET
        fputs($sock, $requete);
        // réception de la réponse du serveur
        $str = fgets($sock, 1024);
        while(!ereg('^HTTP/1.1 ', $str)){
            $str = fgets($sock, 1024);
        }
        // fermeture de la connexion
        fclose($sock);
        list($http, $str, $texte) = explode(" ", $str, 3);
        return array($str, $reponse[$str]);
    }
    return FALSE;
}

Le probleme de cette fonction est sa lenteur quand un site n'existe pas. Comment puis-je faire pour améliorer cela?

merci de votre aide

J'ai penser à Chekdns mais je sais pas comment l'implémenter ici.