[英]PHP - Will fwrite() save the file immediately?
這是我的代碼:
$zplHandle = fopen($target_file,'w');
fwrite($zplHandle, $zplBlock01);
fwrite($zplHandle, $zplBlock02);
fwrite($zplHandle, $zplBlock03);
fclose($zplHandle);
文件何時保存? 是在寫入之后還是在關閉之后立即?
我問這個是因為我有Printfil監聽文件夾中的文件並打印任何新創建的文件。 如果PHP在fwrite
之后立即提交保存,我可能會遇到Printfil沒有捕獲后續寫入的問題。
感謝您的幫助。
PHP可能會也可能不會立即寫入內容。 中間有一個緩存層。 您可以使用fflush()強制它寫入,但除非您只使用一個fwrite(),否則不能強制它等待。
我做了一小段代碼來測試它,似乎在fwrite
之后會立即檢測到新內容,而不是在fclose
之后。
這是我在Linux上的測試。
#!/usr/bin/env php
<?php
$f = fopen("file.txt","a+");
for($i=0;$i<10;$i++)
{
sleep(1);
fwrite($f,"something\n");
echo $i," write ...\n";
}
fclose($f);
echo "stop write";
?>
運行PHP腳本后,我使用tail -f file.txt
來檢測新內容。它與php的輸出標簽同時顯示新內容。
該文件將保存在fclose上。 如果您想先將內容放入文件,請使用fflush() 。
假設你在PHP 5.x中工作,請嘗試使用file_put_contents(),因為它將open / write / close包裝成一個調用。 http://us3.php.net/manual/en/function.file-put-contents.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.