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程序繼續從讀舊文件? 假設它滿了1,我在sometestfile_new上面填滿2, 我在Linux上運行這個,這是inode相關嗎? 如果在每個循環之後添加rewind(),則會在覆蓋時間點之後讀取新文件。
感謝您的回答,您是否知道fopen會緩存文件的文檔資源?就像我說的使用rewind()會將讀取過程打開到新文件。 這也可能與此有關:stream_set_read_buffer(),但該函數僅從5.3.3 –
開始引入,不需要記錄。只要fopen讀取一個文件,假設'$ file = fopen('file.txt','a')'',那個變量就會有''file.txt''的內容,所以它不會在發生''fopen()'後會發生什麼情況,變量將擁有內容,直到解析腳本。 –