Menu

Probleme lors de l'execution d'un script php avec fopen [Résolu/Fermé]

Messages postés
593
Date d'inscription
lundi 22 février 2010
Statut
Membre
Dernière intervention
19 octobre 2013
-
Bonjour,

donc voila...

En fait j'ai 2 sites( A et B) qui normalement communiquent entre eux avec du fopen ( pour recuperer des liens et des données)

j'ai pu faire un script php dans le site A qui permet d'enregistrer des liens provenant du site B et de l'enregistrer dans un fichier txt dans un repertoire du site A.


jusque la c'est pas difficile a comprendre.

le deuxieme script ouvre chaqu'un des liens enregistrés precedemment dans le fichier txt r afin de chercher les données voulues et de les enregistrer par la suite dans un deuxieme fichier txt dans le repertoire du site A.


mon probleme , c'est que le deuxieme script s'execte sans probleme si y'a pas beaucoup de liens dans le 1er fichier txt et donc en sortie me remplie le deuxieme fichier txt avec les données correspondantes.

par contre s'il y'a beaucoup de liens dans le premier fichier txt , le fichier de sortie reste vierge.

P.S: j'ai deja essayé de changer le max_execution _time en 480 secondes et le max_memory_limit en 2048M et pourtant c'est toujours le meme resultat ..... quelq'un peut il m'aider svp?
Afficher la suite 

6 réponses

Messages postés
3077
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
113
0
Merci
Salut !

Première question... Ça ne t'aidera pas mais je dois savoir : Pourquoi utiliser des fichiers et non pas des bases de données ?
Messages postés
593
Date d'inscription
lundi 22 février 2010
Statut
Membre
Dernière intervention
19 octobre 2013
49
0
Merci
l'hebergeur ne me permet pas d'utiliser la base de donnée d'un site A pour le site B.
Messages postés
3077
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
113
0
Merci
Et tu es sûr(e) que le nombre de liens est en cause ? As-tu essayé, par exemple, de savoir à partir de combien de liens ça cause problème ?

Et peux-tu nous poster la partie de ton code qui régit la création de ce fichier ? Ça nous aiderait à déceler d'éventuelles erreurs...
ammmmmine
Messages postés
593
Date d'inscription
lundi 22 février 2010
Statut
Membre
Dernière intervention
19 octobre 2013
49 -
oui c'est a partir d'une 20ene de liens que ca pose probleme, alors que mon but est d'executer le script pour environ 300 liens
coeus
Messages postés
3077
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
113 -
Mmmmmm... Dans ce cas donne-moi ton code, je regarderai ça demain... Là je quitte.
Bonne soirée !!!
Messages postés
593
Date d'inscription
lundi 22 février 2010
Statut
Membre
Dernière intervention
19 octobre 2013
49
0
Merci
voila le script qui me pose probleme : syntaxiquement il est bon mais ca bouffe beaucoup de ressources (je crois meme que ca vient du preg_match et du tableau a 3 dimensions):

 
<?php 
ini_set('max_execution_time','480'); 
ini_set('memory_limit','4096M'); 
?> 

<?php 
$i=0; 
if(!$handle = fopen("liens1.txt", "rb")){ echo'<p>probleme ouverture du lien externe</p>';  } 
else{ 
 while (($buffer = fgets($handle)) !== false) { 
        $links[$i]=$buffer; 
        $i++; 
    } 
        fclose($handle); 
} 
?> 

<?php   
$i=0; 
$h = fopen("liens2.txt","w"); fclose($h);  //pre-disposition :  page vierge 
while(!empty($links[$i])) 
{     
$h1 = fopen(trim($links[$i]), "rb"); 
$contents = stream_get_contents($h1, -1, -1); 
fclose($h1); 
preg_match_all("#<li class=\"leaf([^\"]*)\"><a href=\"\/folder([^(\")]+)\">#" , $contents , $matches[$i]); 
$i++; 
} 

$i=0; 
$j=0; 
$h2 = fopen("liens2.txt","a"); 
while(!empty($matches[$i][2][$j])) { $count = count($matches[$i][2])/2; while($j<$count) {fwrite($h2, "http://www.siteB.com/folder".$matches[$i][2][$j]."\r\n"); $j++; } $j=0; fwrite($h2,"------------\r\n"); $i++;} 
fclose($h2); 
 ?> 

ammmmmine
Messages postés
593
Date d'inscription
lundi 22 février 2010
Statut
Membre
Dernière intervention
19 octobre 2013
49 -
j'ai deja essayé de mettre un fopen comme alternative au tableau a 3 dimensions c'est a dire : des qu'il ouvre un lien il rentre dans le fichier txt les données qui l'interesse ....mais ca arrete le script au bout d'une 20ene de liens aussi .... donc ca revenait presque a la meme chose.

au fait , je m'excuse d'avance pour l'illisiblité de mon code ( ca donne pas envie de le lire ... :p )
Messages postés
3077
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
19 juin 2013
113
0
Merci
Mmmmmmm désolé je ne vois pas ce qui pourrait poser problème au niveau du script... :-(

Par contre, à moins que tu héberges ton propre site, je ne suis pas sûr que tes ini_set() aient grand effet. La plupart des hébergeurs, de mon expérience, ont des protections jalouses contre ce genre de commande ; sinon ce serait bien trop facile de leur drainer des ressources et d'abuser du système.

Tu peux peut-être voir si tu n'as pas un autre moyen de changer les limites de mémoire ? Ou sinon, de voir si ce n'est pas un de tes liens qui bogue ? As-tu essayé de changer l'ordre d'écriture de tes liens, voir si ça bloquerait à une autre ligne que la 20e ?

Désolé de ne pas pouvoir t'être d'une plus grande aide... Bonne chance pour trouver la solution !!!
Messages postés
593
Date d'inscription
lundi 22 février 2010
Statut
Membre
Dernière intervention
19 octobre 2013
49
0
Merci
c bon j'ai trouvé l'erreur :

etant donné que des fois le preg_match_all n'est pas satisfait une case du tableau reste vide ..... du coup quand on passe a l'etape suivante (c.a.d copier le contenu du tableau dans le fichier txt 2 , quand il rencontre une case vide il s'arrete , j'ai rectifié l'avant dernier while).

merci en tout cas pour ton aide ;)