2013-12-18 21:39 阅读 21

使用带有GET变量的php filesize函数

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:

<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.

<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=./&amp;en=./en/&amp;locale=en_US in
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.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    doushi9856 doushi9856 2013-12-18 21:43

    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")); ?>
    点赞 评论 复制链接分享
  • dongmou3615 dongmou3615 2013-12-18 21:42

    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.

    点赞 评论 复制链接分享