11
votes

PHP - FLEHRITE () Sauvegarder le fichier immédiatement?


0 commentaires

4 Réponses :


4
votes

Le fichier sera enregistré sur FCLOSE. Si vous souhaitez mettre le contenu au fichier avant, utilisez fflush () .


0 commentaires

12
votes

7 commentaires

Vrai; OTOH, il va certainement écrire le contenu (et relâcher les serrures de fichier) lorsque vous appelez FCLose ().


@Piskvor: Quand le logiciel de surveillance des dossiers de dossier reconnaîtra-t-il le fichier nouvellement créé? Sera-ce après une sauvegarde ou après la libération de verrouillage? Ceci est crucial car il existe quelque 8 000 blocs de contenu texte à écrire dans le fichier et que le programme de surveillance ne doit pas être déclenché nulle part entre les deux. Merci pour vos intrants.


Je ne sais pas, demandez aux gens de Printfil.


@Sjoerd existe-t-il un moyen de changer de chaching sur ou de désactiver? Si c'est le cas, comment?


@Julien, non, pas avec fwrite . Vous pouvez utiliser le Module Direct I / O si vous voulez plus de contrôle sur votre écrit.


@Sjoerd, FCLOSE implique FLUSH?


@Pacerier Oui, le fichier est rincé quand il est fermé.



5
votes

J'ai fait un petit morceau de code pour le tester et il semble que, après fwrite , le nouveau contenu sera détecté immédiatement, pas après fclose .

Voici mon Test sur Linux. xxx

Après avoir exécuté le script php, j'utilise queue -f fichier.txt pour détecter le nouveau contenu.Et affiche la nouvelle Contenu en même temps que la balise de sortie de PHP.


2 commentaires

D'ACCORD. Au moins cela donne une idée de la possibilité d'une rinçage avant le temps prévu. Je travaillerai sur des choses en fonction de vos résultats de test. Merci spawn!


J'ai l'impression que cette réponse est un peu trompeuse ... comme sur les systèmes occupés ou si d'autres facteurs sont en jeu, le temps d'écriture variera. Mais en utilisant @sjoerd réponse, vous pouvez garantir le temps d'écriture à l'aide de fflush () .



1
votes

En supposant que votre travail sur PHP 5.x, essayez FILE_PUT_Contents (), car il enveloppe l'open / écriture / proche dans un appel. http://us3.php.net/manual/fr/ Fonction.File-Met-Contenu.php


0 commentaires