Best way to determine if a file is empty (php)?
I'm including a custom.css file in my template to allow site owners to add their own css rules. However, when I ship the file, its empty and there's no sense loading it if they've not added any rules to it.
What's the best way to determine if its empty?
if ( 0 == filesize( $file_path ) )
{
// file is empty
}
// OR:
if ( '' == file_get_contents( $file_path ) )
{
// file is empty
}
file_get_contents()
will read the whole file while filesize()
uses stat()
to determine the file size. Use filesize()
, it should consume less disk I/O and much less memory.
Everybody be carefull when using filesize
, cause it's results are cached for better performance. So if you need better precision, it is recommended to use something like:
<?
clearstatcache();
if(filesize($path_to_your_file)) {
// your file is not empty
}
More info here
Using filesize()
is clearly better. It uses stat()
which doesn't have to open the file at all.
file_get_contents()
reads the whole file.. imagine what happens if you have a 10GB file.
filesize()
would be more efficient, however, it could be misleading. If someone were to just have comments in there or even just whitespace...it would make the filesize larger. IMO you should instead look for something specific in the file, like /* enabled=true */
on the first line and then use fopen/fread to just read the first line. If it's not there, don't load it.