24-01-2013, 12:37 PM
D'après le code, certains cas peuvent aboutir à l'appel du triplet fopen/fputs/fclose plusieurs fois dans la même page. Deux possibilités:
- fclose n'a pas le temps de bien se faire, car fopen est appelé trop vite (le script php va trop vite)
- l'hébergeur limite le nombre de fopen par script php (sur un mutualisé, ca se tient)
Dans ton cas, il vaudrait donc mieux procéder ainsi:
-Lire le XML existant si besoin, puis le fermer (via file ou f_gets_content)
- initialiser la variable $xml en début de code (avec le tag <?xml...?> dedans)
- remplir cette variable dans ton script, sans toucher au fichier XML réel
- sauver le fichier XML en fin de boucle, via file_puts_content
- détruire $xml
unlink est inutile. file_puts_content écrasera le fichier précédent.
Ton procédé consistant à sauver le fichier xml dans la boucle, via intermédiaire, est bien trop lourd et peut saturer ton accès au disque dur, ou générer des erreurs dus à la latence.
- fclose n'a pas le temps de bien se faire, car fopen est appelé trop vite (le script php va trop vite)
- l'hébergeur limite le nombre de fopen par script php (sur un mutualisé, ca se tient)
Dans ton cas, il vaudrait donc mieux procéder ainsi:
-Lire le XML existant si besoin, puis le fermer (via file ou f_gets_content)
- initialiser la variable $xml en début de code (avec le tag <?xml...?> dedans)
- remplir cette variable dans ton script, sans toucher au fichier XML réel
- sauver le fichier XML en fin de boucle, via file_puts_content
- détruire $xml
unlink est inutile. file_puts_content écrasera le fichier précédent.
Ton procédé consistant à sauver le fichier xml dans la boucle, via intermédiaire, est bien trop lourd et peut saturer ton accès au disque dur, ou générer des erreurs dus à la latence.