2016-03-03 50 views
0

我的代碼的一部分在下面,我使用PHP腳本來讀取目錄中的文件,這些文件會不斷寫入,並且此腳本會搜索它們並將它們的內容寫入數據庫。我收到的錯誤是,當一個文件仍在寫入,並且這個腳本檢測到它時,它會嘗試修復文件,它收到的$數據與文件大小不匹配,因爲它已經更改並且引發錯誤。PHP問題,fread引發錯誤

我的問題是如何確保在該腳本讀取文件之前文件已經成功寫入。提前致謝。

$myfile = fopen($filename, "r") or die("Unable to open file!"); 
$data = fread($myfile,filesize($filename)); 
fclose($myfile); 

一些閱讀表明,最好在寫入文件的腳本中包含下面的代碼。

if (flock($file,LOCK_EX)){ 
    fwrite($file,"Write something"); 
    flock($file,LOCK_UN); 
} else { 
    echo "Error locking file!"; 
} 
+0

嘗試打開'binary'模式,'的fopen($文件名,「RB」);'否則你將打開文本模式文件和代碼0X1A有關文件的結束信號,你不能確保沒有一些鎖定系統。 – Wizard

回答