IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

crawler en php/curl


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut crawler en php/curl
    Bonjour,

    J'ai un petit soucis, j'ai un robot d'indexation que j'ai codé en php/curl. Pour ne pas perdre de temps, et relancer le robot sur la prochaine url dés qu'il a terminé l'actuel j'ai ajouté en fin de code une requête curl qui boucle sur le fichier du robot.

    Problème, malgré que j'ai désactivé la récupération du contenu de la page, le premier lancement du script du robot attends le résultat de la requête curl sur lui même et ainsi de suite et on fini sur une erreur 500 ce qui a pour effet de me laisser de plus en plus de connexion mysql ouvertes et ça fini par poser des problèmes.

    Deuxième point, moins grave, les logs serveur m'affichent une erreur 401 malgré que la requête aboutie bien.

    Le code que j'utilise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $http_auth_ident = "login:mdp";
    $c = curl_init();
    curl_setopt($c, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($c, CURLOPT_USERPWD, $http_auth_ident); 
    curl_setopt($c, CURLOPT_URL, "urlducrawler");
    curl_exec($c);                
    curl_close($c);
    Merci d'avance de votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    attends le résultat de la requête curl sur lui même
    Je n'ai pas compris cette phrase.

    En tout cas, je ne sais pas comment tu as fait ton code (puisque tu ne l'as pas dit) mais un script PHP attend forcemment la fin de l'étape précédente pour avancer. Si tu veux lancer plusieurs actions sans attendre, il faut t'interesser soit au multithread soit lancer de nouvelles instances de php dans ton script.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    Je vais essayer de faire simple.

    Disons que mon script s'appelle crawl.php

    crawl.php se compose ainsi :

    #recherche en BDD de la page à crawler
    #crawl de cette page via php/curl
    #enregistrement en BDD du resultat du crawl

    #lancement d'une requête php/curl (code donné dans le premier message) sur crawl.php pour le relancer afin qu'il crawl la prochaine page

    Vu que je ne demande pas à cette dernière requête curl de récupérer le contenu de crawl.php je pensais que php n'attendrait pas le résultat de la requête.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il faudrait également que tu regardes quelle est l'erreur PHP derrière ton erreur 500.
    Tu peux faire une interface en Ajax, tu pourras voir les resultat au fur et à mesure des réponses.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 68
    Par défaut
    ajax m'obligerait à garder une fenêtre navigateur ouverte alors que je veux que le crawler tourne en automatique sur le serveur 24h/24.

    Pour l'erreur php plus en détails, je regarde les logs apache ? Si c'est là que je dois regarder c'est déjà fais, et à heure égale je ne trouve pas d'enregistrement correspondant.

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Non, les logs PHP.

    Dans ce que tu fais aussi tu as besoin de garder le navigateur ouvert.
    Si c'est un système en backoffice, il faut faire des appels en ligne de commande.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. PHP + Curl + header
    Par krm666 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/07/2012, 16h09
  2. php curl principe
    Par altair8080 dans le forum Langage
    Réponses: 0
    Dernier message: 14/04/2012, 17h43
  3. Probleme php - curl - function
    Par thibaut06 dans le forum Langage
    Réponses: 2
    Dernier message: 29/11/2010, 10h41
  4. PHP & CURL
    Par 123pierre dans le forum Langage
    Réponses: 8
    Dernier message: 05/02/2009, 05h39
  5. un crawler en php
    Par kodokan dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2006, 23h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo