Comment accéléer la vitesse d'un crawleur en php

Discussion dans 'Débuter en référencement' créé par @routaym, 16 Août 2015.

  1. @routaym
    @routaym Nouveau WRInaute
    Inscrit:
    3 Août 2015
    Messages:
    6
    J'aime reçus:
    0
    j'ai écrit un script en php qui fait le crawl d'un site web .mais il prend bq de tepms : environ 1h30 pour donner le resultat
    Alors comment je peux accélerer la vitesse de crawling
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 004
    J'aime reçus:
    284
    La question est trop vague:
    - APC/OPcache
    - Multithreading
    - Bande passante
    - Puissance de la machine
    - Parser utilisé SimpleXML vs DOMDocument
    - ...

    Xdebug a un profiler intégré pour analyser ton code.

    1h30 pour combien de pages crawlées ?
     
  3. @routaym
    @routaym Nouveau WRInaute
    Inscrit:
    3 Août 2015
    Messages:
    6
    J'aime reçus:
    0
    environ 20000pages, j'utilise le DOMDocument et je ne sais pas comment travailler avec le multithreading :/
     
  4. duchnoun38
    duchnoun38 Nouveau WRInaute
    Inscrit:
    21 Juillet 2011
    Messages:
    41
    J'aime reçus:
    0
    Multiprocess si tu ne veux pas t'embeter avec les mutex/semaphore du multithreading

    => fonction exec de php

    Pour le crawl en lui même plutot que passé par curl ou pire des file_get_contents distant , => fonction socket_select (voir phpsocketdaemon)
     
  5. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    De toute façon, c'est trop vague pour donner des précisions qui pourrait l'aider.
    - tu connais déjà les 20 000 liens ? Ou tu les récupère au fur et à mesure du crawle ?
    - c'est sur le même site ? Est-ce que ce(s) site(s) a/ont un temps de réponse rapide ?
    - qu'est-ce que tu récupères dans ces pages ?
    - qu'est-ce que tu enregistres ? Et où ? (mysql, fichier, etc.).
    - quelle version de PHP utilises-tu ? (bien qu'en beta, j'ai pu faire des tests avec PHP 7 qui a triplé voir quadruplé un système d'analyse de fichier, vraiment impressionnant).

    Bref, fait nous un retour complet de ton existant, et le code aussi.
     
  6. @routaym
    @routaym Nouveau WRInaute
    Inscrit:
    3 Août 2015
    Messages:
    6
    J'aime reçus:
    0
    @Blount
    bon !
    1-j'ai tésté avec le Xenu : il m'a indiqué le nombre des pages internes traités
    2-le but de mon script est d'extraire tous les liens externes et morts (erreur 404) inclus dans les pages d'un site (son url donné en entrée)
    3-j'utilise le php 5.4.12
    4- l'affichage sur l'ecran
    c mon code
    exter.php
    Code:
    <?php 
    
    // It may take a whils to spider a website ... 
       set_time_limit(10000); 
    
    // Inculde the phpcrawl-mainclass 
    include_once('../PHPCrawl_083/PHPCrawl_083/libs/PHPCrawler.class.php'); 
     include ('2.php');  
     //include ('crawl3.php');
    // Extend the class and override the handleDocumentInfo()-method 
     
    class MyCrawler extends PHPCrawler 
    
    {   
    function handleDocumentInfo(PHPCrawlerDocumentInfo $DocInfo) {
    
        if (PHP_SAPI == "cli") $lb = "\n"; 
        else {
    	$lb = "<br />"; 
    	 $html = @file_get_contents($DocInfo->url);
    	 $home_url = parse_url($DocInfo->url ,PHP_URL_HOST );
          $doc = new DOMDocument;
    	 libxml_use_internal_errors(true);
         $doc->loadHTML($html);
    	 libxml_clear_errors();
    	  
    
    // Drop the ->item(0)
    $links = $doc->getElementsByTagName('a');
    
    foreach ($links as $link){
         
    	//if (substr($link->getAttribute('href'),0,7) == "http://"  and is_valid_url($link->getAttribute('href') === false)){
    	$link_url = parse_url($link->getAttribute('href') ,PHP_URL_HOST );
    	 
    	if (($link_url !== $home_url) and is_valid_url($link->getAttribute('href')) === false ){
        echo $link->getAttribute('href'), PHP_EOL."<br/>";
    	echo '<a href = "'.$link->getAttribute('href').'" TARGET=_blank.>'.$link->nodeValue.'</a>'.'<br/>';
    	 
    	}
    	 
    }
    
    	 
          
       }
     }
    }
    $crawler = new MyCrawler(); 
    $crawler->setURL("http://www.tunisie-web.org/"); 
     
    $crawler->addURLFilterRule("#\.(jpg|gif|png|pdf|jpeg|css|js)$#i"); 
    $crawler->setWorkingDirectory("C:/Users/mayss/Documents/travailcrawl/"); 
    $crawler->go(); 
    //httpwww.annuaire-ag.com
    //
     
    ?>
    
    la foction is_valid_url : (script 2.php)
    Code:
     <?php
     
       function is_valid_url($url) {
      $resURL = curl_init();
    curl_setopt($resURL, CURLOPT_URL, $url);
     curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1);
     curl_setopt($resURL, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback');
     curl_setopt($resURL, CURLOPT_FAILONERROR, 1);
    curl_exec ($resURL);
    $intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE);
    curl_close ($resURL);
    if ($intReturnCode == 404) {
        return false;
     }
     else return true;
     }
     
     ?>
    
     
Chargement...
Similar Threads - accéléer vitesse crawleur Forum Date
comment acceléer l'indexation de ce site ? Crawl et indexation Google, sitemaps 25 Novembre 2010
Pagespeed insights : comment améliorer la vitesse d'une page ? Demandes d'avis et de conseils sur vos sites 10 Juin 2020
Améliorer la vitesse sous Wordpress : passer toutes les pages en article Administration d'un site Web 3 Avril 2020
WordPress Améliorer la vitesse: Minimize request size Développement d'un site Web ou d'une appli mobile 1 Mars 2020
Vitesse du site, temps de chargement etc Débuter en référencement 18 Février 2020
Cobaye pour tester vitesse site Problèmes de référencement spécifiques à vos sites 10 Janvier 2020
Améliorer la vitesse de mon site et le référencement Développement d'un site Web ou d'une appli mobile 7 Décembre 2019
Site lent, comment améliorer la vitesse ? Développement d'un site Web ou d'une appli mobile 15 Juin 2019
Quel outil fiable pour tester la vitesse du site? Référencement Google 2 Février 2019
WordPress Améliorer la vitesse d'indexation des articles ? Référencement Google 19 Décembre 2018
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice