[PHP] Tester URL

Statut
N'est pas ouverte pour d'autres réponses.

WaKaaN

JcQL
Bonjour à tous,

J'ai un fichier txt avec toutes des URL (~2300) à des formats différents (http://www.exmaple.com , www.example.net , 210.0.25.52) .

Il y a une adresse par line.

Je souhaiterais que toutes ces adresses soit vérifiées l'une après l'autre.

J'ai beau essayé des dizaines de trucs différents, aucuns ne marche... (même avec 10 adresses)

Mes problèmes sont les timeouts, les délais pour traiter une seule adresse:gne:

Donc help me à trouver la fonction is_valid_url... :p




PHP:
function is_valid_url($url) {
if ok = return true;
if nok = return false;
}



$fichier = fopen("test.txt","r");


echo '<table border="1">';
while(!feof($fichier)) {
    $link = fgets($fichier);
     $link = trim($link);

    if(is_valid_url($link)) {
        echo '<tr bgcolor="green"><td>';
        echo 'Oui';
    } else {
        echo '<tr bgcolor="red"><td>';
        echo 'Non';
    }
    echo '</td><td>' . $link.'</td></tr>';
}
fclose($fichier);
echo '</table>';
 

Tifox

ou pas
Je sais pas tester ce que je vais raconter ici, donc je peux me planter, mais :

Un site peut parfois mettre plusieurs secondes avant de répondre. Donc si tu veux tester toutes tes 2300 url dans un seul script, il faut que le timeout php de ton serveur soit vraiment gros. D'après la doc de fsockopen, il y a moyen de définir le timeout, mais même avec une valeur raisonnable, ton script pourra tourner des heures.

Personnellement, je pense que je ferai ça en AJAX, avec une requete par url (ou groupe d'url) à tester.
 

DaBeast

Elite
Si tu es en php 5 tu peux utiliser la fonction get_headers(). Puis analyser ce qu'elle te renvoye pour voir si la page existe ou pas.
 
1er
OP
WaKaaN

WaKaaN

JcQL
Je vais aller checker un peu get_headers() mais mon probleme est que si j'augmente mon timeout php, il y a le timeout de firefox qui, j'ai l'impression, stoppe ma requete...
 

Tifox

ou pas
Pour moi, tu ne sais de toute façon pas t'en sortir si tu veux checker toutes les url en une seule requête, ce sera trop long. Je ne sais pas quel est le but de la page web (monitoring constant, juste savoir ce qui ne va pas, savoir si tel et tel serveur sont online, ....), mais je pense que tu vas devoir approfondir un peu plus l'analyse des besoins pour trouver une solution valable.
 
1er
OP
WaKaaN

WaKaaN

JcQL
Mwi...

En fait, à l'origine c'est un fichier excel qui contient toutes des adresses internet accumulées depuis pas mal de temps...

Seulement une majorité de ces adresses ne plus valides. Alors plutot que de vérifier les liens un à un, je voulais automatisé la chose.

Maintenant, existe-t-il une fonction semblable dans excel 2007 ? (Meme du VB est bienvenue)
 
1er
OP
WaKaaN

WaKaaN

JcQL
Fais tourner ton script en cli.
Sais-tu préciser ce qu'est le "cli" ?

Mais pour mon probleme j'ai trouvé la solution ici.

Ce n'est pas de la programmation, mais à quoi se casser la tete quand d'autres l'ont fait et mieux que nous ^^.

Exportable en txt et réimportable en Excel avec les virgules qui sépare lien,code erreur, erreur.

Thx à tous :)
 

ozilrit

Elite
En ligne de commande :
$ php -f script.php​
 
1er
OP
WaKaaN

WaKaaN

JcQL
aaah wi, c vrai, c'est pas con....

Thx pour l'info :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut