2011-09-06 2 views
2

다음 예제 코드를 제공 변경되는 파일 FREAD :

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

sometestfile, 내 경우에는 txt 파일이며, 읽기 루프 동안 변경 이유에서 읽을 계속 PHP는 프로그램입니다 오래된 파일? 2가 가득한 1과 2로 가득 찬 고양이를 말해봐. Linux에서 실행 중이며,이 inode는 관련이 있습니까? 각 루프 이후에 rewind()가 추가되면 덮어 쓰기 시점 이후에 새 파일이 읽혀집니다.

답변

2

php.net에서

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

fopen()는 스트림 filename 의해 지정된 리소스 이름, 결합한다.

fopen()는 즉시 그것을 "캐시"당신이 언급하는 방법으로 파일과 뜻 출력라고으로, 예는 당신의 $contents = fread($handle, 10);

당신은 파일을 삭제할 수 있으며이 완료 될 때까지 아직도 그 자원을 읽 파일 !feof($handle)

fopen()으로는 다른 작업을 수행 할 수 없으며 원본을 다시 읽거나 인쇄를 계속할 수 없습니다.

+0

답장을 보내 주셔서 감사합니다. fopen이 파일을 캐시하는 문서 리소스를 알고 계신가요? 마찬가지로 내가 rewind() 사용하여 새 파일을 읽기 프로세스를 켭니다 말했다. stream_set_read_buffer()와 관련이있을 수 있지만이 함수는 5.3.3 –

+0

에서 가져온 것이므로 문서화 할 필요가 없습니다. fopen에 의해 파일이 읽히 자마자''$ file = fopen ('file.txt', 'a')''라고 가정하면, 그 변수는''file.txt''의 내용을 가지게되므로 ''fopen()''이 일어 났을 때 스크립트가 파싱 될 때까지 그 변수가 내용을 가질 때 무슨 일이 일어나는지에 관계가 있습니다. –