| 
|  Re: CGIファイルの読み込みについて ( No.5 ) |  | 日時: 2024/02/07 21:15名前: からから ID:KHqvuTyA
 
ちらみ様、ご返信頂きありがとうございます。昨日は時間が取れず、返信が遅くなってしまい失礼いたしました;
 
 ちらみ様のご返信を受け、自己解決することができました!
 どうやらCGIファイルに記述していたコードに原因があったようです…
 少し考えれば自分で解決できそうなところを、お手を煩わせてしまい大変失礼いたしました…
 
 以下、解決した方法を記載しておきます。
 
 CGIファイル(Perl)のアクセス者のホスト情報を取得する際の記載部分を
 
 原文:
 $host  = $ENV{'REMOTE_HOST'};
 my $addr  = $ENV{'REMOTE_ADDR'};
 if($host eq "" || $host eq "$addr"){
 ($p1,$p2,$p3,$p4) = split(/\./,$addr);
 $temp = pack("C4",$p1,$p2,$p3,$p4);
 $host = gethostbyaddr($temp, 2);
 if($host eq ""){ $host = $addr; }
 }
 
 ↓
 
 改変後:
 $host  = $ENV{'REMOTE_HOST'};
 my $addr  = $ENV{'REMOTE_ADDR'};
 use Socket qw(getaddrinfo getnameinfo);
 if($host eq "" || $host eq "$addr"){
 my ($err1, @result) = getaddrinfo($addr);
 if($err1){ $host = $addr; return; }
 my ($err2, $hostname) = getnameinfo($result[0]{addr});
 if($err2){ $host = $addr; return; }
 $host = $hostname;
 if($host eq ""){ $host = $addr; }
 }
 
 このように直したら読み込み速度が改善しました。
 IPアドレスの仕組み等については詳しくないためこうする事でどうして改善できたのかは理解できてない頭なのですが…。
 
 お忙しいところお時間を取って頂きありがとうございました。
 コードの記述等にもし問題が見られそうでしたらご指示のように致しますので、どうかご教示ください。
 
 それでは、大変失礼いたしました。
 ご対応頂きありがとうございました!
  |  |