Probleme lors de l'execution d'un script php avec fopen

Résolu/Fermé
Utilisateur anonyme - Modifié par ammmmmine le 14/06/2011 à 22:41
 Utilisateur anonyme - 15 juin 2011 à 16:03
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?
A voir également:

6 réponses

coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
14 juin 2011 à 22:56
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 ?
0
l'hebergeur ne me permet pas d'utiliser la base de donnée d'un site A pour le site B.
0
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
14 juin 2011 à 23:01
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...
0
Utilisateur anonyme
14 juin 2011 à 23:03
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
0
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
14 juin 2011 à 23:05
Mmmmmm... Dans ce cas donne-moi ton code, je regarderai ça demain... Là je quitte.
Bonne soirée !!!
0
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); 
 ?> 

0
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 )
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coeus Messages postés 3021 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 19 juin 2013 119
15 juin 2011 à 14:14
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 !!!
0
Utilisateur anonyme
15 juin 2011 à 16:03
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 ;)
0