簡體   English   中英

PHP - fwrite()會立即保存文件嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM