2009-09-26 5 views
3

Im en cours d'exécution d'un agrégateur de lien vidéo, et j'ai un script qui vérifie si la vidéo a été supprimée du site. C'est fait en obtenant la sortie HTML du lien, et en vérifiant par rapport aux mots-clés cibles.CURL est-il cher comparé à file_get_contents()?

Actuellement j'utilise file_get_contents() pour obtenir le code html du lien. Le problème est que certains sites redirigent vers une autre URL si le lien est supprimé. L'utilisation de curl résout le problème ... mais va-t-il utiliser davantage de ressources serveur? Je lance le script checker toutes les 10 minutes, et il vérifie 1000 liens (il y a 300 000 liens dans la DB).

Le code que je veux utiliser est la suivante:

$Curl_Session = curl_init('http://www.domain.com'); 
curl_setopt ($Curl_Session, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt ($Curl_Session, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec ($Curl_Session); 
curl_close ($Curl_Session); 
+3

Pourquoi ne le comparez-vous pas? – derobert

Répondre

3

Si quelque chose, ce sera plus rapide. Si votre php déjà compilé avec curl alors vous utiliserez la même quantité de mémoire si votre appel curl ou non.

Cependant, je serais inquiet de suivre ces liens. vous pouvez entrer dans une boucle de cette façon ou frapper beaucoup de sauts ralentissant ainsi votre script. Donc, je voudrais ajouter un max CURLOPT_MAXREDIRS

Aussi, téléchargez-vous ces vidéos pour voir si elles existent? Je voudrais juste obtenir la taille du fichier à distance:

curl_setopt($Curl_Session, CURLOPT_HEADER, false); 
curl_setopt($Curl_Session, CURLOPT_NOBODY, true); 

pour obtenir la taille

$info = curl_getinfo(); 
echo $info[‘download_content_length’] 
+0

Une autre façon d'obtenir la taille est: $ size = array_change_key_case (get_headers ($ url, 1)); if (is_array ($ taille ['contenu-longueur'])) $ taille = $ taille ['contenu-longueur'] [nombre ($ taille ['contenu-longueur']) - 1]; else $ size = $ taille ['contenu-longueur']; echo $ taille; –

1

La bibliothèque CURL ne peux pas être plus lent que le réseau, donc ne vous inquiétez pas à ce sujet. Une connexion Internet plus rapide et un moyen de distribuer cette vérification vous aidera beaucoup plus que n'importe quelle bibliothèque, peu importe la lenteur.