Problème d'execution d'un long script sous SSH

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Problème d'execution d'un long script sous SSH

Re: Problème d'execution d'un long script sous SSH

par Mazarini » 11 mai 2012, 14:36

A priori, c'est un problème de serveur de noms, les serveurs de noms dépendent de ton hébergement, pas du site que tu visites.
Il est possible de tombé sur un moment ou le serveur est surchargé ou alors un problème réseau passager.

Vu les problèmes que tu rencontres, tu devais stocker les noms de fichiers dans une table et les supprimer 1 par un après traitement. Comme ca tu pourrais en venir à bout après quelques lancements sans reprendre du début à chaque fois. Tu pourrais même prévoir d'en traiter un certain nombre et de stopper.

Pour info, j'ai fais un script qui chargeait des pages d'un site, ca n'a jamais marché du boulot, ca a marché presque du premier coup de chez moi. Problèmes de proxy et de réseau au boulot.

Re: Problème d'execution d'un long script sous SSH

par Bhen » 11 mai 2012, 14:13

Pensez-vous qu'il est possible de se faire bannir son adresse ip au bout d'un moment ?
Car sans avoir rien touché au code, j'ai maintenant des erreur du type : couldn't resolve host

Re: Problème d'execution d'un long script sous SSH

par Mazarini » 11 mai 2012, 13:35

Peut être qu'en faisant une boucle :
<?PHP
$compteur = 1;
$codeSource = curl($url); 
while (curl_errno() != 0)
{
    echo curl_error(),'/ essai ',$compteur,"\n";
    if ($compteur++> 10);
    {
       die("trop d'erreurs");
    }
    sleep(2);
    $codeSource = curl($url); 
} 
?>

Re: Problème d'execution d'un long script sous SSH

par Bhen » 11 mai 2012, 11:59

J'ai parlé trop vite :(

Après 33 minutes sans aucune erreur, je n'ai que des :
Erreur CuRL : connect() timed out !

... des idées ?

Re: Problème d'execution d'un long script sous SSH

par Bhen » 11 mai 2012, 11:49

Aucune erreur CuRL détectée !
Et en rajoutant 2 à 3 sleep(1); par-ci par-là, ça fonctionne depuis maintenant une demi-heure !

Merci à tous :)

Re: Problème d'execution d'un long script sous SSH

par Mazarini » 11 mai 2012, 10:41

Il est possible que le serveur constate trop de requetes de ta part et te blacklist provisoirement pour éviter une surcharge.

Dans un premier temps tu pourrais vérifier les erreurs rencontrées par curl (curl_error et curl_errno)
Dans un second, tu pourrais ajouter une temporisation entre 2 accès.

Re: Problème d'execution d'un long script sous SSH

par Bhen » 11 mai 2012, 08:09

J'ai fait des tests individuels sur les urls concernées, aucun problème !
Le problème ne vient pas du code mais du serveur qui doit saturer au bout d'un moment je pense...
Je vais essayer de tester quelque chose dans ce genre là et je vous tient au courant :
$pagesEchec = array();
for ($i = 0; $i <= $nbpages; $i++) {
     $urlimage = strpos("blablabla");

     if ($urlimage === false) {
          $pages[$i] = $pagesEchec[$i]; //On copie l'url de la page dont le traitement a échoué dans un tableau pagesEchec
     }
}
Si une erreur intervient lors du strpos, on laisse en quelque sorte cette page de côté pour la fin...

Re: Problème d'execution d'un long script sous SSH

par xTG » 11 mai 2012, 07:06

Faudrait peut être nous montrer le code concerné, car aucun strpos là dedans. ;)

Problème d'execution d'un long script sous SSH

par Bhen » 11 mai 2012, 00:21

Bonjour,

J'ai réalisé un script qui a pour but de récupérer un grand nombre d'images sur un autre site (une image par page).
Le script est structuré comme ceci :
$pages = array(); //$pages[0] = 'http://xxx.com/lala.html', $pages[1] = 'http://xxx.com/coucou.html', etc... jusqu'à ~2000 adresses structurées de la même façon
$nbpages = sizeof($pages); //Nombres de pages indexées dans le tableau

for ($i = 0; $i <= $nbpages; $i++) { //Pour chaque page indexée,

$url = $pages[$i]; 
$codeSource = curl($url); //On va récupérer le code source de la page à l'aide de CURL
$lienImage = "http://njnk.com/B6RFB/lala.jpg" //A l'aide de strpos(), on "filtre" le code source afin de récupérer l'adresse de l'image
uploadThisImageToMyServer($lienImage); //Je copie l'image sur mon propre serveur

}
Ce script dure trèèès longtemps, je le démarre donc via un simple "php fichier.php" en SSH.

Le problème : Le script fonctionne très bien jusqu'à un certain moment (10-15 minutes après le début) où ça m'affiche le warning "Offset not contained in string" qui signifie que strpos() ne peux donner la position de la chaine que je recherche car l'offset n'est pas bon. Ça m'a fait ça pendant 10 minutes, où aucune image n'a donc été uploadée, puis le script a continué à fonctionner normalement...

J'ai fait des tests individuels sur les urls concernées, aucun problème !

D'où cela peut-il bien venir ?
Merci :)