CGIのファイルサイズを表示するには?

[上に] [前に] [次に]
hochan 2000/03/16(木) 16:33:21
CGIファイルをホームページのトップ(index)にし、
そのトップページのファイルサイズを閲覧者様に公開して、
ファイルサイズから予想ダウンロード時間
(ページが表示されるまでの大体の時間)を
やりたいと思っているんです。


ファイルの容量は
 $filessize = -m "/path/filename";
で簡単に取得できるらしいのですが
どういう書き方をすればいいのかよくわかりません。

試しにやっては見たもののサーバーエラーが出たり、
ファイルサイズが表示されなかったりしました。


CGIのファイルには一体どういった書き方をすればいいのでしょうか…?
CGIに対してはまだまだ初心者なので、
この質問は無鉄砲かとは思いますが、
お力やアドバイス等をお借りしたいと思っています。。

よろしくお願いいたします。

フシギバナ 2000/03/16(木) 16:48:56
>$filessize = -m "/path/filename";
$filessize = (-s "/path/filename");
でしょう。

hochan 2000/03/18(土) 14:37:31
フシギバナさん、レスありがとうございます。

ところでこれはprint文を使って、
ファイルのサイズ表示をさせるのでしょうか…。。

初歩的な質問で申し訳ございません…。

びぎな++ 2000/03/18(土) 15:58:11
../200002/00020351.htm
を参照したところ,HTTPヘッダとして

print "Content-type: text/plain\n";
print "Content-length: ",$filessize,"\n";
print "\n";

でいけるとおもいます。

びぎな++ 2000/03/18(土) 16:12:31
あれ? CGIファイルそのもののサイズを出すんですか?
>ファイルサイズから予想ダウンロード時間
って「あと〜秒」とか「〜%読み込み」って表示させることですよね?
これは,標準出力されるデータ量をContent-lengt

hochan 2000/03/22(水) 12:12:37
びぎな++さん、レスありがとうございます。
お返事が遅れてしまって、申し訳ございません。

>ファイルサイズから予想ダウンロード時間
>って「あと〜秒」とか「〜%読み込み」って表示させることですよね?

はい。そのような感じです。
そのコンテンツメニューのCGIファイルのファイルサイズを、
コンテンツページの上部ら辺に表示して、
閲覧者の皆さんに少しでも快適に見れるように…と思って、
そういったことをしてみたいと思うのです。

例えて言うのであれば、
「電車があと何分で到着しますよ」
ということを表示して皆さんに知らせたいと思っているのです。

びぎな++さんのレスを元に自分で色々と試してみたのですが、
やはり、サーバーエラーが出てしまって、
どうしてもわかりません…。

/path/filename
というのは ./top.cgi とかでは間違っているのでしょうか…。

もしよろしければ、そういったことを紹介している
ホームページを教えていただきたいのですが…。。
参考書とかはちょっと懐が寒いので…(笑)

検索をしてみたのですが、何をキーワードに検索すればいいのか
わからなかったもので…。。
どなたかおしえていただけないでしょうか…?
よろしくお願いいたします。

びぎな++ 2000/03/22(水) 14:34:20
>そのコンテンツメニューのCGIファイルのファイルサイズを、
>コンテンツページの上部ら辺に表示して、
こういうことでしたら上の私の発言は無視してください。

これは,動かすCGIファイルそのもののファイルサイズを表示させるってことですよね?
「CGIファイルのサイズ」とhochanさんのいう「予想ダウンロード時間」は基本的に比例しませんよ。
うーん.... ちょっと説明できないんで,どなたかバトンタッチ!

hochan 2000/03/23(木) 20:38:40
>これは,動かすCGIファイルそのもののファイルサイズを表示させるってことですよね?
はいそうです。

>「CGIファイルのサイズ」とhochanさんのいう「予想ダウンロード時間」は基本的に比例しませんよ。

そうなんですかぁ…。。

それではわがままばかりで申し訳ないのですが、
「「CGIファイルのサイズ」というものを表示させる」
という方向で考えていきたいと思います。

ファイルサイズが小さければ、多分みなさんも「表示されるのが速いのかも…」
と、思うでしょうから…。
確かに回線の状態にもよるのですが…。


そのようなことを
$filessize = (-s "/path/filename");
でやるとしましたら、どのようにすればいいのでしょうか。

参考にできるホームページなど御存知でしたら、
教えていただきたく思います。

御面倒をおかけして申し訳ございません。

にゃあ 2000/03/24(金) 07:41:27
そ、それはないです(汗)
データファイルのサイズが大きければ
PERLスクリプトのサイズがどんなに小さくたって重いです。

出力を一度、変数にためてその文字列の大きさを見てはどうですか?
頻繁にサイズが変わる(掲示板等)でしたら、

1.掲示板を開く
2.掲示板のCGIが自分の出力する文字列のサイズを「どこかのファイル」に書きこむ。
3.次の人がindex.cgiを開いたら「どこかのファイル」を参考にファイルサイズを書きこむ。

で、いかがでしょうか?

にゃあ 2000/03/25(土) 06:58:21
ありゃりゃ、ちょっと誤解してました。
コンテンツのCGIの出力する大きさ、であれば
実行するに表示すれば十分ですね(^^;

$printdata1 ="";
$printdata2 ="";

$printdata1.= "Content-type: text/html\n\n";
$printdata1.="<html>\n<head>\n";
$printdata1.="<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=x-sjis\">\n";
$printdata1.="<title>テスト</title></head>\n";
$printdata1.="<BODY>このページのサイズは";
$printdata2.="です。";



$printsize=length($printdata1.$printdata2);
print "$printdata1 $printsize $printdata2);

こんなものでいかがです?

hochan 2000/04/05(水) 03:15:29
[[解決]]
お返事が遅くなって申し訳ございません。
にゃあさんの方法で試してみたのですが、
やはりまだよくわかっていないので、
もう少し自分で本などを参考にしながらやってみます。

今まで、アドバイスくださった皆様には
大変申し訳ないのですが、
もうちょっと勉強してみます。

どうもありがとうございました。

[上に] [前に] [次に]