No.1557 投稿時間:2002年02月20日(Wed) 08:23 投稿者名:にしむら URL:http://penguin.nakayosi.jp/
お世話になっています。
AN HTTPDでCGIを使ったとき、だんだんCGIの動きがトロクなるときが
あります。
たとえば、ここの掲示板と同じだと思うのですが、wforum.cgi の反応
がすっかり鈍くなってしまいました。クリックしてから画面がでてくる
まで15秒くらいまたされます。設置したときは、スイスイ動いていたの
ですが・・・
なにか解決方法はありませんか。
No.1560 投稿時間:2002年02月20日(Wed) 19:31 投稿者名:にしむら URL:
自己レス、です。(^^;;
再度、いろいろやってみたら、LAN環境のみの現象だとわかりました。
外部(WAN側)からのアクセスについては、問題ないレスポンス(反応)
です。
これって、どういうことなんでしょ??
私んとこの固有の現象かな。とほほ。(T_T
No.1561 投稿時間:2002年02月20日(Wed) 19:40 投稿者名:鷹の巣 URL:http://sakaguch.com/
> 再度、いろいろやってみたら、LAN環境のみの現象だとわかりました。
wforum.cgi のバージョンを教えて下さい。3.23でしょうか。
No.1565 投稿時間:2002年02月20日(Wed) 23:19 投稿者名:鷹の巣 URL:http://sakaguch.com/
> > 再度、いろいろやってみたら、LAN環境のみの現象だとわかりました。 > > > wforum.cgi のバージョンを教えて下さい。3.23でしょうか。 自宅サーバーの環境は、 OS:windows 2000 Professional build 2195 SP2 Webサーバー:AN HTTPd1.36b CGI:ActivePerl-5.6.1.631-MSWin32-x86.zip ブラウザのプロキシ設定をはずすとwforum.cgi のバージョン3.23と3.24で、LAN環境のみの現象で確かにアクセスが10秒以上かかることが 確認できました。 #----------------# # ホスト名取得 # #----------------# sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($host eq "" || $host eq $addr) { # $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } } 上記の様に一行をコメント化すると、LAN環境でもアクセスが10秒以上かからなくなります。セキュリティ上、マズイでしょうか。 もし、3.23より前のバージョンをお持ちでしたら、「ファイル比較 phUpdate(Windows95-98-Me-ユーティリティ)」 http://www.vector.co.jp/soft/win95/util/se148069.html で、wforum.cgiのファイルを比較して頂けませんか。
No.1567 投稿時間:2002年02月21日(Thu) 00:20 投稿者名:ryujin URL:
当方、プログラミングは不得意で理解はできていないのですが、ココまでされるなんて素晴らしいと関心してしまいました。
P.S.
良かった「鷹の巣」さんのコメント待って恥じの<s>上書き</s>上塗りするとこでした。
記事No.1401を参照してくださいなんてコメントしちゃうとこでしたから。
No.1569 投稿時間:2002年02月21日(Thu) 09:52 投稿者名:にしむら URL:http://penguin.nakayosi.jp/
> wforum.cgi のバージョンを教えて下さい。3.23でしょうか。
こちらの環境は下のようになっています。、
Windows2000ProSP2
AN HTTPD 1.38c
wforum v3.23
アドバイス通り "ホスト名取得" のところの一行をコメントアウト
することで、スイスイ動くようになりました。
とてもうれしいでーす。(^O^)
No.1571 投稿時間:2002年02月21日(Thu) 13:14 投稿者名:鷹の巣 URL:http://sakaguch.com/
> こちらの環境は下のようになっています。、 > Windows2000ProSP2 > AN HTTPD 1.38c > wforum v3.23 > > アドバイス通り "ホスト名取得" のところの一行をコメントアウト > することで、スイスイ動くようになりました。 kentさんの掲示板 http://www.kent-web.com/support/old/47/0229.html にこの問題を投稿していましたところ、「たいふ~ん!」さんより有難いご回答がありました。 以下にその内容を貼り付けます。 たいふ~ん!> 10秒以上かかるって方が謎ですが(ネームサーバ探しに行ってるのかな?) たいふ~ん!> (10秒かかればホスト名の変換ができてるのか知りたい所・・・) セキュリティ上自宅サーバーのLAN 内の名前解決を行っていないため、 gethostbyaddrの逆引きでtime outになります。 たいふ~ん!> ・・・まあ、問題ないでしょう。 たいふ~ん!> ただ、それやるなら、 たいふ~ん!> たいふ~ん!> # if ($host eq "" || $host eq $addr) { たいふ~ん!> # $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; たいふ~ん!> # } たいふ~ん!> if ($host eq "") { $host = $addr; } たいふ~ん!> たいふ~ん!> のように、3行消して1行追加しといた方がいいです。 色々教えて頂いてありがとうございました。 nslookupコマンドで、逆引きが使用できるOS(PC-UNIX , MAC OSX , windows NT/2000/XP)の方には、ご指示頂いた方法で改造するように推奨します。 nslookupコマンドで、逆引きが使用できないOS(windows 95/98/Me , MAC)の方には、下記の様に改造するように推奨します。 投稿後の追記)CGIの中で、$hostがどのように使用されているかどうかが、不明ですから、全てのOSの方にも、下記の改造を推奨します。 LAN内で逆引き名前解決(サーバー機のhostsファイルにLAN内のアドレスとホスト名を設定する等)を行っていれば、改造は不要です。 #----------------# # ホスト名取得 # #----------------# sub get_host { $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; # ------- 追加開始 ------ # LAN 内のプライベートセグメントアドレス(192.168.1.0)を設定して、 # LAN 内からのアクセス(192.168.1.*)に対して、gethostbyaddrが実行されないようにします。 if (pack("C3", split(/\./, '192.168.1.0')) eq pack("C3", split(/\./, $addr))) { $host = $addr; } elsif ($host eq "" || $host eq $addr) { # ------- 追加終了 ------ # 変更 if ($host eq "" || $host eq $addr) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2) || $addr; } }
No.1574 投稿時間:2002年02月21日(Thu) 20:16 投稿者名:にしむら URL:http://penguin.nakayosi.jp/
ありがたや~ありがたや~ (__)
これで安心して使えそうです。
それにしても、完全に脱帽で~す。
No.1582 投稿時間:2002年02月22日(Fri) 13:32 投稿者名:よっくん URL:
LAN内部からのcgiアクセスが遅い理由がみなさんのお陰でやっと分かりました。
この書き込みは非常に役に立ちましたよ。ありがとうございます。
今まで自宅サーバで悩んでいた事がこれで解決しました。
私の自宅サーバーには3つ程全く種類の違う掲示板があるのですが
上記の内容の部分を触ると改善しました。
よかったやっと納得です。