2016-12-05 29 views
1

我使用PHP函數file_put_contents()將一些內容放入txt文件中。文檔中的示例沒有使用fclose()完成,應該關閉文件還是沒有必要?在PHP中,我應該在使用file_put_contents()時使用fclose()嗎?

我這樣做:

 $root = $_SERVER['DOCUMENT_ROOT']; 
     $log = $root.'/logs/logsContenido.txt'; 
     $agregadoLog = "texto a agregar"; 
     file_put_contents($log, $agregadoLog, FILE_APPEND | LOCK_EX); 

而這一點。我什麼也沒關閉。

應該我寧願做這樣的事情:

  $root = $_SERVER['DOCUMENT_ROOT']; 
      $log = $root.'/logs/logsContenido.txt'; 
      $agregadoLog = "texto a agregar"; 
      $file = file_put_contents($log, $agregadoLog, FILE_APPEND | LOCK_EX); 
fclose($file); 
+1

至少在用戶級環境中,不可能在file_put_contents上使用'fclose'。沒有流關閉。 – Andrew

+5

你是否經歷過所有這一切? http://php.net/manual/en/function.file-put-contents.php - 一個實例顯示*「應該很明顯,這應該只用於如果你正在寫一個,如果你寫多個時間到同一個文件,你應該用fopen和fwrite自己處理它,當你完成寫操作時fclose。「*和*」這個函數和調用fopen(),fwrite()和fclose() 「* –

+0

*」此函數返回寫入文件的字節數,或者返回失敗時的FALSE。「* - 您希望在* ...上調用'fclose' *什麼? – deceze

回答

10

不,你不應該/不能。 file_put_contents負責打開文件,寫入內容和關閉文件。事實上,它並沒有暴露任何你即使你想要接近你的可能

+2

謝謝!簡短,很好,很清楚! – Rosamunda

1

file_put_contents中,PHP會爲您處理它。所以沒有必要fclose它。

但是,如果您使用的手柄類似fopen,那麼您需要關閉它,因爲在整個腳本執行過程中將保持打開文件。哦,並且一旦完成後關閉句柄也是一個好習慣

+0

請參閱@alex的[here another response:](https://stackoverflow.com/questions/3938534/download-file-to-server-from-url/)。他使用: 'file_put_contents(「Tmpfile.zip」,fopen(「http://someurl/file.zip」,'r'));' 並且他不會說'fclose(...)應該使用。但是我有** HTTP請求失敗!**錯誤的不可預知的問題。 – vlakov

相關問題