2011-07-08 3 views
1

J'ai un script qui ajoute des chaînes dans un fichier.Problème d'écriture de fichier php

Par exemple (ce qui est un script de test):

$i = 1; 
$file = 'wikipedia/test.txt'; 
$text = 'the quick brown fox jumps over the lazy dog'; 
while($i!=0) 
{ 
    file_put_contents($file, $text, FILE_APPEND); 
} 

Mais pour une raison inconnue mon programme arrête les chaînes lorsque le annexant fichier texte atteint la taille du fichier de 2097156 B. Ce n'était pas un problème d'espace disque car je pouvais toujours créer un autre fichier texte limité à la même valeur de taille de fichier.

J'ai essayé d'utiliser d'autres fonctions php fwrite, fputs mais ne fonctionnait toujours pas.

Une idée de ce problème?

+2

S'il vous plaît développer "ne fonctionne toujours pas." Avez-vous rencontré exactement le même problème avec exactement la même taille de fichier en utilisant 'fwrite' et' fputs'? –

+0

Oui .. même problème. Il arrête d'ajouter quand il a atteint la taille de fichier – ralpu

Répondre

1

Cela semble peu probable, mais vous avez peut-être déjà rencontré le max_execution_time de PHP si son réglage actuel est très bas. Essayez d'augmenter sa valeur dans php.ini

0

Votre boucle n'a pas de sens. Il ne change jamais $ i. Essayez-le sans le temps.

$file = 'wikipedia/test.txt'; 
$text = 'the quick brown fox jumps over the lazy dog'; 
file_put_contents($file, $text, FILE_APPEND); 
+0

Une boucle non liée a du sens s'il veut 'constamment ajouter des chaînes – horatio

+0

la boucle n'a pas été le problème. – ralpu

0

Plusieurs problèmes peuvent provoquer ce problème.

  1. Vous avez peut-être rencontré la limite de temps d'exécution maximale (par défaut: 30 secondes).
  2. Vous pouvez avoir épuisé la limite de mémoire (par défaut: varie selon la version)
  3. Quelque chose a peut-être changé sur le disque (les autorisations de fichier peuvent avoir changé ou vous avez peut-être dépassé un quota de disque).

La sortie d'erreur de PHP serait d'une valeur inestimable pour identifier lequel de ces problèmes peut avoir contribué au problème.

Questions connexes