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
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.
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.
As mentioned in other answers, filesize
is the way to go for local files. Many stream wrappers on the other hand, including HTTP, do not have stat()
support, thus filesize
will fail, whereas file_get_contents
will work.
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