我在我的模板中包含了custom.css文件,以允许网站所有者添加自己的css规则。但是,当我发送文件时,它是空的,如果他们没有添加任何规则,就没有意义加载它。
确定它是否为空的最佳方法是什么?
if ( 0 == filesize( $file_path ) )
{
// file is empty
}
// OR:
if ( '' == file_get_contents( $file_path ) )
{
// file is empty
}
答案 0 :(得分:49)
file_get_contents()
将在filesize()
使用stat()
时读取整个文件以确定文件大小。使用filesize()
,它应该消耗更少的磁盘I / O和更少的内存。
答案 1 :(得分:9)
使用filesize()
显然更好。它使用stat()
,根本不需要打开文件。
file_get_contents()
读取整个文件。想象一下如果你有一个10GB的文件会发生什么。
答案 2 :(得分:8)
每个人在使用filesize
时都要小心,因为它的结果会被缓存以获得更好的性能。因此,如果您需要更高的精度,建议使用以下内容:
<?
clearstatcache();
if(filesize($path_to_your_file)) {
// your file is not empty
}
答案 3 :(得分:5)
filesize()
会更有效率,但可能会产生误导。如果有人只是在那里有评论,甚至只是空格......这会使文件大一些。 IMO你应该在文件中寻找特定的东西,比如第一行的/* enabled=true */
,然后使用fopen / fread来读取第一行。如果它不存在,请不要加载它。
答案 4 :(得分:1)
正如其他答案所述,filesize
是用于本地文件的方式。另一方面,许多流包装器(包括HTTP)不支持stat()
,因此filesize
将失败,而file_get_contents
将起作用。