
ファイル名によってサイズが決まるファイルをダウンロードできる Web サーバーを用意したいと思います。次のようなものです:
Browse to http://mydomain.com/100MB -> receive any 100MB file
Browse to http://mydomain.com/200MB -> receive any 200MB file
Browse to http://mydomain.com/254MB -> receive any 254MB file
Browse to http://mydomain.com/10kb -> receive any 10kb file
Browse to http://mydomain.com/1GB -> receive any 1GB file
Browse to http://mydomain.com/3GB -> receive any 3GB file
URL でファイル サイズを指定する正確な方法は重要ではありません。また、受信したファイルのデータ コンテンツ (ランダム データ、すべてゼロなど) も、適切なサイズであれば重要ではありません。
Apache サーバーをインストールしていますが、すべてのファイルを生成することは明らかに不可能です (ディスク容量がすぐに不足します)。
この動作を実現する方法はありますか? Apache モジュール、PHP、または別の方法を使用するのでしょうか?
答え1
引数を取得するには、mod_rewrite を使用します。
RewriteEngine on
RewriteRule ^/?(.*)$ generate.php?size=$1 [L]
次に、generate.php
解析し$_GET['size']
て適切なバイト数を返します。
答え2
最終的に私が望んでいたことをどうやって実現したかを説明します。
これは PHP では非常に簡単だったようです。PHP を学習した後、私が作成した generate.php スクリプトは次のとおりです。
<?php
$size = $_GET['size'];
$partsize = 1024 * 16;
$part = str_repeat(' ',$partsize);
$partcount = intval(floor($size / $partsize));
$leftover = $size - ($partcount * $partsize);
for ($i = 0; $i < $partcount; $i++) {
echo($part);
flush();
}
if ($leftover > 0) {
echo(str_repeat(' ',$leftover));
}
?>
閲覧中http://mydomain.com/generate.php?size=1000スペースのみを含む 1000 バイトのファイルを返します。
PHP の軌道に私を導いた受け入れられた回答では、書き換えルールの使用が提案されていますが、私が行っている作業ではそれは必要ありません。