httrack reste le meilleur outil pour crawler une page, il parse bien les pages à la recherche de liens et maintient la liste des liens à scanner sans créer de doublon.
Par contre, je n'arrive toujours pas à lui faire ouvrir plusieurs connexions.
J'ai donc regarder du coté de curl, et j'ai découvert une classe php permettant d'exécuter plusieurs curl en parallèle ParallelCurl.
J'ai testé cette solution qui peut être intéressante, mais sur mon projet, elle met en avant un autre problème: la génération des pages n'est pas accélérée car dépendante du temps de réponse de ma base de données. J'ai donc optimisée quelques requêtes faisant des recherches dans une colonne de type tableau:
- création d'un index GIN sur la colonne cible ( tag dans mon cas )
- utilisation d'une requête de type WHERE tag @> ARRAY['%s'] , le %s est remplacé par la valeur adéquate grâce à un sprintf
Après optimisation, je peux modifier mon script de mise à jour de la db afin de lancer un curl parallèle permettant de générer les nouvelles pages dites statiques puis une purge des pages contenant une pagination et un httrach ciblant ces mêmes pages.
[^] # Re: wget, curl
Posté par tigrou3tac . En réponse au message Parcourir un site web en mode spider. Évalué à 1.
Je m'auto-réponds, ça peut toujours servir.
httrack reste le meilleur outil pour crawler une page, il parse bien les pages à la recherche de liens et maintient la liste des liens à scanner sans créer de doublon.
Par contre, je n'arrive toujours pas à lui faire ouvrir plusieurs connexions.
J'ai donc regarder du coté de curl, et j'ai découvert une classe php permettant d'exécuter plusieurs curl en parallèle ParallelCurl.
J'ai testé cette solution qui peut être intéressante, mais sur mon projet, elle met en avant un autre problème: la génération des pages n'est pas accélérée car dépendante du temps de réponse de ma base de données. J'ai donc optimisée quelques requêtes faisant des recherches dans une colonne de type tableau:
- création d'un index GIN sur la colonne cible ( tag dans mon cas )
- utilisation d'une requête de type WHERE tag @> ARRAY['%s'] , le %s est remplacé par la valeur adéquate grâce à un sprintf
Après optimisation, je peux modifier mon script de mise à jour de la db afin de lancer un curl parallèle permettant de générer les nouvelles pages dites statiques puis une purge des pages contenant une pagination et un httrach ciblant ces mêmes pages.