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 190
    J'aime reçus:
    333
    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:
    701
    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
WordPress GT Metrix : comment tester sa vitesse au mieux ? Débuter en référencement 27 Juillet 2021
Vitesse lente en partie à cause d'adsense AdSense 17 Mai 2021
Vitesse de découverte d'un domaine Crawl et indexation Google, sitemaps 3 Avril 2021
Comment améliorer la vitesse de mon site Demandes d'avis et de conseils sur vos sites 19 Mars 2021
vitesse de chargement d'un site web Développement d'un site Web ou d'une appli mobile 9 Février 2021
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