Reputation: 2633
I am trying to use the filesize php function to automatically write the filesize in a meta tag I am using.
What I am doing normally is for example
<meta name="DC.format" content="<?= filesize($filename); ?> bytes">
Now, if this is used with the following syntax it returns:
php
<meta name="DC.format" content="<?= filesize("index.php"); ?> bytes">
resulting html
<meta name="DC.format" content="6412 bytes">
But if I use the following syntax I get the following error.
php
<meta name="DC.format" content="<?= filesize("index.php?locale=en_US"); ?> bytes">
resulting html
<meta name="DC.format" content="<br /><b>Warning</b>: filesize():
stat failed for index.php?es=./&en=./en/&locale=en_US in
<b>D:\xampp\htdocs\casasenmeridabaspul.com-v2\header.php</b>
on line <b>87</b><br /> bytes">
What I suppose is happening is that filesize is getting the filesize of the specific file without doing any php processing or such. How can I calculate the resulting file size after all the server side has processed everything?
With a little more detail:
I have header.php, footer.php and index.php where index.php has the previous 2 included. I was thinking perhaps something like curl but I am not really familiar with it so I would leave it to the experts.
Thanks in advance.
Upvotes: 0
Views: 314
Reputation: 78994
It's not a file. It's text output from the execution of the file. The best you can do is strlen()
or mb_strlen()
without using HTTP functions / classes I think:
<?= strlen(file_get_contents("http://www.example.com/index.php?locale=en_US")); ?>
Upvotes: 1
Reputation: 29424
You pass an (invalid) local path to filesize()
and it therefore tries to resolve it on your hard disk. This obviously fails due to the query parameters which invalidate the file name.
It is a valid part of a URI however. You can therefore start a HTTP request and get the size of the returned content:
PHP: Remote file size without downloading file
Please bear in mind that this method will fire off a HTTP request which can influence the performance quite a bit.
Upvotes: 1