3

別のphpスクリプトで操作された後、ファイルシステム上のファイルのサイズを決定する必要があるphpスクリプトがあります。

たとえば、固定サイズの zip ファイルが存在しますが、アクセスしようとするユーザーに基づいて、未知のサイズの追加ファイルが挿入されます。したがって、ファイルを提供しているページは getfile.php?userid=1234 のようなものです。

これまでのところ、私はこれを知っています:

filesize('getfile.php'); //returns the actual file size of the php file, not the result of script execution

readfile('getfile.php'); //same as filesize()

filesize('getfile.php?userid=1234'); //returns false, as it can't find the file matching the name with GET vars attached

readfile('getfile.php?userid=1234'); //same as filesize()

PHPファイル自体だけでなく、PHPスクリプトの結果サイズを読み取る方法はありますか?

4

5 に答える 5

1

誰かがcurlを使用してこれを行うためのオプションを投稿しましたが、反対票を投じた後、回答を削除しました。残念です。これが機能するための1つの方法だからです。だからここに私のために働いた彼らの答えがあります:

$ch = curl_init('http://localhost/getfile.php?userid=1234');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //This was not part of the poster's answer, but I needed to add it to prevent the file being read from outputting with the requesting script
curl_exec($ch);

$size = 0;

if(!curl_errno($ch))
{
    $info = curl_getinfo($ch);
    $size = $info['size_download'];
}

curl_close($ch);

echo $size;
于 2012-12-27T16:50:29.933 に答える
1

ファイルサイズ

PHP 5.0.0 以降、この関数は一部の URL ラッパーでも使用できます。

何かのようなもの

filesize('http://localhost/getfile.php?userid=1234');

十分なはずです

于 2012-12-27T15:39:17.377 に答える
0

出力のサイズを取得する唯一の方法は、実行してから見ることです。スクリプトによって結果が異なる場合がありますが、実際に使用するには、知識に基づいて推定するのが最善の方法です。つまり、5MB のファイルがあり、別の 5k のユーザー固有のコンテンツを追加すると、最終的にはまだ約 5MB になります。

于 2012-12-27T15:40:45.960 に答える
0

Ivanの答えを拡張するには:

あなたの文字列はGETパラメータの有無にかかわらず「getfile.php」です。これはローカルファイルとして扱われるため、phpファイル自体のファイルサイズを取得します。

http プロトコルで始まっていないため、ローカル ファイルとして扱われています。サポートされているプロトコルについては、http: //us1.php.net/manual/en/wrappers.phpを参照してください。

于 2012-12-27T15:41:04.777 に答える
0

filesize() を使用すると、警告が表示されました: Warning: filesize() [function.filesize]: stat failed for ... link ... in .. file ... on line 233

filesize() の代わりに、それを置き換える 2 つの作業オプションを見つけました。

1) $headers = get_headers($pdfULR, 1); $fileSize = $headers['Content-Length']; echo $fileSize;

2) echo strlen(file_get_contents($pdfULR));

今では正常に動作しています。

于 2013-06-13T06:26:56.730 に答える