2 votes

lire un fichier en cours de modification

Fourni l'exemple de code suivant :

<?php
$handle = fopen("/tmp/test_file/sometestfile", "r");
$contents = '';
while (!feof($handle)) {
    $contents = fread($handle, 10);
    print $contents;
    sleep(1);
}
fclose($handle);
?> 

Si le fichier test, qui est un fichier txt dans mon cas, change pendant la boucle de lecture, pourquoi le programme php continue-t-il à lire l'ancien fichier ? Disons qu'il est rempli de 1 et que j'y ajoute sometestfile_new qui est rempli de 2. J'exécute ce programme sous Linux, est-ce lié aux inodes ? Si rewind() est ajouté après chaque boucle, le nouveau fichier sera lu à la place, après le point d'écrasement dans le temps.

2voto

Mihai Iorga Points 23686

De php.net

resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

fopen() lie une ressource nommée, spécifiée par filename à un ruisseau.

el fopen() dès qu'il est appelé, il "cache" le fichier et le restitue selon la méthode que vous avez mentionnée. $contents = fread($handle, 10);

Vous pouvez supprimer le fichier et il continuera à lire cette ressource jusqu'à ce qu'il termine le fichier. !feof($handle)

Vous ne pouvez rien faire d'autre avec fopen() vous ne pouvez pas relire la source et continuer à l'imprimer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X