68user's page 掲示板

Prev< No. 740〜755> Next  [最新発言に戻る] [過去ログ一覧]
No. 740 # かず*なごや 2000/02/22 (火) 11:28
ありがとうございます。

現在、NFS & NIS の設定がうまくいってないそう
なので、その辺の影響かな?

まずは、ちゃんと設定するようがんばります。(^^;

No. 741 # らんらん 2000/02/22 (火) 21:26
いつも拝見させていただいてます
今c言語でcgiのプログラム書いてるんですが

hoge.exe?data1=aa&data2=bb

みたいに引数を渡してプログラムを直接呼びたいのですが、うまくデータが渡せません
Formからだと正常に動作するんですがサーバーの設定が関係しているんでしょうか

サーバーはwindows nt + iisです
apachだとそのような事はないですか?

No. 742 # 68user [URL] [E-mail] 2000/02/22 (火) 23:41
> hoge.exe?data1=aa&data2=bb
情報が不足していますので、わかりません。

「FORM からだと正常に動作する」というのは、どういう
ふうに呼び出しているんですか? 「引数を渡してプログラムを
直接呼びたいのですが」とはどういうふうに呼び出そうと
しているんですか?

No. 743 # kika [URL] 2000/02/23 (水) 07:44
いつも勉強させていただいてます。あたしもがんばります。

No. 744 # すがチャン [E-mail] 2000/02/23 (水) 08:03
大江山と言う童謡か歌の歌詞知りませんか?

No. 745 # らんらん 2000/02/23 (水) 09:52
スミマセンでした...
hoge.exeは日付等を受け取りlogを集計して返すプログラムです

まず送信フォームのhtmlはこんな感じです

&lt form method=post action="cgi-bin/hoge.exe" &gt
&lt select name="data1" size="1" &gt
&lt option selected value="aa"&gt aa &lt /option &gt
&lt option value="bb" &gt bb&lt /option &gt
&lt /select &gt
&lt INPUT TYPE="SUBMIT" VALUE="送信" &gt
&lt /form &gt

これを

&lt A HREF=hoge.exe?data1=cc&data2=dd &gt hoge &lt /a &gt

のようにリンクから呼んで決まった処理をさせたいんですけどうまくいきません

お手数ですが情報お持ちでしょうか

No. 746 # らんらん 2000/02/23 (水) 09:55
またスミマセン....
<>の書き方を間違えてしまいました

No. 747 # 68user [URL] [E-mail] 2000/02/23 (水) 10:23
FORM は POST で送っているわけですね? で、
> <A HREF=hoge.exe?data1=cc&data2=dd> hoge </a>
だと GET になるわけです。hoge.exe は POST でデータを
受けているので、標準入力を読んでいるはずですよね。
もしGET にも対応したいなら環境変数 QUERY_STRING を
見るようにしないといけません。

C なら getenv("QUERY_STRING") でもいいし、
    main(int argc,char *argv,char *envp)
として envp を見てもよいでしょう。

No. 748 # らんらん 2000/02/23 (水) 12:54
ありがとうございます

if(0 == strcmp("POST",getenv("REQUEST_METHOD"))) { /* POSTの場合 */
                if(fgets(buf, len+1, stdin) == NULL) {
                                return 1;
                }
} else { /* GETの場合 */
                strncpy(buf, getenv("QUERY_STRING"), sizeo(buf)-1);
}

こんな感じでうまくいきました
POST と GET ぜんぜん意識してませんでした(よく調べます)

ほんとにありがとうございます。

No. 749 # Rica 2000/02/23 (水) 15:49
promptの説明文の中にHTMLタグが表示されてましたよ

% set prompt="%Sabc%s%Bdef%b%Ughi%u:"
abc<b>def</b><u>ghi</u>:

No. 750 # スナフキン 2000/02/25 (金) 03:15
お久しぶりです、以前くだらない質問ばかりしていたものです(^^;

CGIでサーバーの負荷率を調べたいのですが何かよい方法は無いでしょうか?

一応 top の表示のヘッダー部分に表示される数値を取り出し加工しようと
もくろんだのですが見事に失敗しました。

open(SYS, "top|");

やはり甘かった。コマンドラインで top > hoge.txt としても取れないので
top から取り込むのは駄目みたいですね。
オプションにもそれらしいものが見つかりませんでした。
FreeBSDの日本語マニュアルを見る限りはどうも互換性なさそうです。

面倒なんで試していませんが、一定の処理にかかった時間を測定して
負荷を調べようかと思うのですが・・・
これもいまいち正確さに欠けそうだし。何よりめんどうだし(^^;

あっ因みにそれほどの正確さは求めていません、そもそもそんなに正確に
数値を取れないと思ってますから。

何か方法を知っていましたら、よろしくお願いします。
OSはVineLinuxです。

No. 751 # 68user [URL] [E-mail] 2000/02/25 (金) 06:14
> promptの説明文の中にHTMLタグが表示されてましたよ
どうもです。直しておきます。
# 実は気づいていたんだけど、自作の変換フィルタをどう
# 直せばよいのかわからくて悩んでいるところです。

> CGIでサーバーの負荷率
load average を求めたいなら uptime や rup localhost
などが使えると思います。

> open(SYS, "top|");
入力に tty を読んでるのなら、top < /dev/null で
いけるかもしれません (ダメかも)。

なお load average は、違うマシンや OS と比較は意味が
ありません。わかっておられるかもしれませんが、念のため。

No. 752 # スナフキン 2000/02/25 (金) 23:49
uptimeの情報ありがとうございます。
なるほどこれなら何とかなりそうです。

手持ちのコマンドリファレンスには uptime のことが載っていません
でしたが、man には掲載されていたので、これでうまくいきそうです。

/usr/bin/ や /usr/local/bin/ にあるコマンドを一つづつ調べるのも
あまりの数に手を焼いていたところなので助かりました。

>入力に tty を読んでるのなら、top < /dev/null で
やってみましたが駄目でした。

>なお load average は、違うマシンや OS と比較は意味が
>ありません。わかっておられるかもしれませんが、念のため。
すいません、意味がよくわからないのですが、「この結果を元に
ほかのサーバーと比較するには意味が無い」と言う意味でしょうか。

単純に、マシンの反応が遅い時の原因が、回線の影響かサーバーの負荷
かを調べる用途に使うつもりです。

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

No. 753 # 68user 2000/02/26 (土) 05:14
> 「この結果を元にほかのサーバーと比較するには意味が無い」
そうです。「Pentium133+FreeBSD と Pentium166+FreeBSD」とか、
「Pentium133+FreeBSD と Pentium133+Linux」などの load average を
比較するのは意味がないです。また、load average が2倍だから
と言って、負荷が2倍とか速度が1/2 ということもない、という
意図で書きました。

> 単純に、マシンの反応が遅い時の原因が、回線の影響かサーバーの負荷
> かを調べる用途に使うつもりです。
ということであれば、load average でいいと思います。

> /usr/bin/ や /usr/local/bin/ にあるコマンドを一つづつ調べるのも
> あまりの数に手を焼いていたところなので助かりました。
`load average' というキーワードを知っていれば、
    % strings -f /usr/bin/* | grep -i 'load average'
などとするのも一つの手ですね。

No. 754 # へにか 2000/02/26 (土) 08:34
この間示唆して頂いた、マルチスレッドの関連文書を調べる長旅に出た
ところ、68userさんのところにあるではないですか(echo関連)。灯台下
暗し・・・ 御恥ずかしい。
ただ、以下のようなメッセージが出たので、どうも僕の環境(後述)では
不可能みたいです。
The Unsupported function fork function is unimplemented at echo.pl line 36.

因みにperl -vの結果は以下の通りです。
version 5.005_03 built for MSWin32-x86-object
目的がテキスト変換なので、delegateみたいな形式(/-_-)で対応しようかな、
それともjavaでも使ってみようかな、それともPCにUnixをインストールしよう
かな、と悩んでいるところです(なんかどれも実行しなさそうですが)。

No. 755 # 68user 2000/02/26 (土) 19:13
> どうも僕の環境(後述)では不可能みたいです。
Windows では fork は使えませんので、select を使うしか
ないですね。

IO::Socket と IO::Select を使って
    http://X68000.startshop.co.jp/~68user/tmp/bogus-proxy.pl
こんな感じでしょうか。本当に実用段階まで持ってくには
まだまだ機能追加、バグ取りをしなきゃいけませんが。

ポイントは、全てのソケットからのデータを select 経由で
受け取ること。今はそうなってませんので、1つのソケット
からのデータが遅れると、そこがボトルネックになってしまいます。

Prev< No. 740〜755> Next  [最新発言に戻る] [過去ログ一覧]