Probleme lors de l'execution d'un script php avec fopen
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
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?
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:
- Probleme lors de l'execution d'un script php avec fopen
- Script vidéo youtube - Guide
- Easy php - Télécharger - Divers Web & Internet
- Mas script - Accueil - Windows
- Ghost script - Télécharger - Polices de caractères
- Expert php pinterest - Télécharger - Langages
6 réponses
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 ?
Première question... Ça ne t'aidera pas mais je dois savoir : Pourquoi utiliser des fichiers et non pas des bases de données ?
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...
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...
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); ?>
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 )
au fait , je m'excuse d'avance pour l'illisiblité de mon code ( ca donne pas envie de le lire ... :p )
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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 !!!
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 !!!
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 ;)
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 ;)