这是我的代码:
$zplHandle = fopen($target_file,'w');
fwrite($zplHandle, $zplBlock01);
fwrite($zplHandle, $zplBlock02);
fwrite($zplHandle, $zplBlock03);
fclose($zplHandle);
文件何时保存?是在写入之后还是在关闭之后立即?
我问这个是因为我Printfil监听文件夹中的文件并打印新创建的文件。如果PHP在fwrite
之后立即提交保存,我可能会遇到Printfil没有捕获后续写入的问题。
感谢您的帮助。
答案 0 :(得分:11)
PHP可能会也可能不会立即写入内容。中间有一个缓存层。您可以使用fflush()强制它写入,但除非您只使用一个fwrite(),否则不能强制它等待。
答案 1 :(得分:5)
我制作了一小段代码来测试它,似乎在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的输出标记同时显示新内容。
答案 2 :(得分:2)
该文件将保存在fclose上。如果您想先将内容放入文件,请使用fflush()。
答案 3 :(得分:1)
假设你在PHP 5.x中工作,请尝试使用file_put_contents(),因为它将open / write / close包装成一个调用。 http://us3.php.net/manual/en/function.file-put-contents.php