[英]multiple fopen with same file and fwrite same file at same time PHP?
[英]php fwrite and fopen in same statement
我看到一个php脚本写入了这样的文件:
fwrite(fopen($logFileName, "a"), $logData);
绝对比以下内容更简洁:
$handle = fopen($logFileName, "a");
fwrite($handle, $logData);
fclose($handle);
特别是对于单行代码,或者要在单个语句中写入文件的情况。
可以不要在第一种方法上使用fclose
吗? 还是该代码在某种程度上被认为是越野车?
额外的问题:是否有类似于file_put_contents($logFileName, $logData)
但是允许我追加到文件中而不是覆盖它?
谢谢 :-)
这种单线的主要错误是缺少fclose。 根本不是一个好的风格。
但是,如果这是唯一的声明,或者程序员不在乎脚本生存期内的某些打开文件句柄,则可能没问题。
注意:通常,当脚本终止时,php会清除运行时分配的所有资源。 对于CGI调用尤其如此。 我猜想,对于非CGI调用(Web服务器中托管的php模块)也是如此,但是您应该意识到这一点。
对于您的奖金问题:答案是肯定的,尽管我猜您希望有所不同。
file_put_contents($filename, file_get_contents($filename).$newContent);
从字面上看,您的问题已在语义上得到了回答,这甚至不值得尝试,因为您将整个文件读入内存只是为了再次将其放回去。
但是,是什么阻止您自己编写该函数呢?
function file_put_additional_contents( $filename, $content ){
$file = fopen($filename, "a");
fwrite($file, $content);
fclose($file);
}
[edit]正如Symeon Quimby所指出的,file_put_contents有一个特殊的标志:
file_put_contents($filename, $content, FILE_APPEND);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.