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

时间:2013-12-18 21:39:16

标签: php file

我正在尝试使用filesize php函数自动在我正在使用的元标记中写入文件大小。

我正在做的通常是例如

<meta name="DC.format" content="<?= filesize($filename); ?> bytes">

现在,如果使用以下语法,则返回:

php
<meta name="DC.format" content="<?= filesize("index.php"); ?> bytes">

resulting html
<meta name="DC.format" content="6412 bytes">

但是如果我使用以下语法,我会收到以下错误。

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=./&amp;en=./en/&amp;locale=en_US in
<b>D:\xampp\htdocs\casasenmeridabaspul.com-v2\header.php</b>
on line <b>87</b><br /> bytes">

我认为正在发生的是filesize正在获取特定文件的文件大小而不进行任何php处理等。在所有服务器端处理完所有内容之后,如何计算生成的文件大小?

稍微详细一点:

我有header.php,footer.php和index.php,其中index.php包含前两个。我想的可能是卷曲,但我并不熟悉它,所以我会留给专家。

提前致谢。

2 个答案:

答案 0 :(得分:1)

您将(无效)本地路径传递给filesize(),因此会尝试在您的硬盘上解析它。由于查询参数使文件名无效,这显然会失败。

然而,它是URI的有效部分。因此,您可以启动HTTP请求并获取返回内容的大小:

PHP: Remote file size without downloading file

请记住,此方法将触发可能会影响性能的HTTP请求。

答案 1 :(得分:1)

这不是文件。它是文件执行的文本输出。您可以做的最好的是strlen()mb_strlen()而不使用我认为的HTTP函数/类:

<?= strlen(file_get_contents("http://www.example.com/index.php?locale=en_US")); ?>