CGI-BBS > SO−HO > ショッピングバスケット > cargo.cgiの多重ロードについて


カレッヂ
カレッヂ


質問者 稲田  投稿日 1/26(土) 17:52:39
 先日,ホスティングサービスの会社からcargo.cgiが多重ロードされている為,撤去の依頼がありました.

 負荷の高いCGIは停止して欲しいと言う事なんですが,多重ロードってのはどういう現象なんでしょうか?

 CGIを修正することで防げる内容なんでしょうか?
回答者 呑兵衛@大阪  [削除]  投稿日 1/29(火) 01:18:16
一般的に言いますと、多重ロードとは<html></html>の間で一度しか使用しないのに、
あるデータを何度も読み込み(再計算を含む)送り出す現象を言います。
どのバージョンのスクリプトでしょう?
また、改造されているならどこをどのようにしているかをお知らせいただければ、
ヒントが差し上げられるかもしれません。
質問者 稲田  [削除]  投稿日 2/1(金) 18:12:07
> 一般的に言いますと、多重ロードとは<html></html>の間で一度しか使用しないのに、
> あるデータを何度も読み込み(再計算を含む)送り出す現象を言います。
> どのバージョンのスクリプトでしょう?

 「ショッピングバスケット・プロV4」を利用しております.

> また、改造されているならどこをどのようにしているかをお知らせいただければ、
> ヒントが差し上げられるかもしれません。

 商品の説明を記述するための備考欄を2つ増やしています.

 「if ($rem3 eq '') { $rem3 = ' '; }」という行があれば,同様に
 「rem4」,「rem5」の行を作っています.

 これまで,商品一覧を表示するたびに cargo.cgiを呼び出していたのですが,呼び出
し方を修正し,最初の1回とカゴに入れる操作をしたときだけに呼び出すようにしまし
た.これによってログを見たところ,これまでの10分の1程度の呼び出しに変わりま
した.一応は負荷が少なくなったと思います.
回答者 呑兵衛@大阪  [削除]  投稿日 2/3(日) 00:18:39
商品を選択すれば cargo.cgi は必ず働きます。ただしcargo.cgi の一部の機能です。

<frame src="./cgi-bin/cargo421/cargo.cgi?_mode=under" name="down" scrolling="no" noresize frameborder="no">

フレームを利用した商品ページの下ページには、cargo.cgiによる上記の命令がセットされます。
これは、tmpディレクトリに格納された商品データを分析し、金額のみ表示する部分です。
ここは、 cargo.cgi では
if ($in{'_mode'} eq 'under') { $under = 1; } # 途中経過モード
を感知して、HTMLの出力を
if ($under) {
によって実行するものです。
説明をうかがった限りでは、ここらあたりを重複実行されていそうですが。
質問者 稲田  [削除]  投稿日 2/5(火) 20:19:42
> 説明をうかがった限りでは、ここらあたりを重複実行されていそうですが。

 一つのHTMLファイルの中で,重複して呼び出しをするようなことはしておりませんで
したが,呼び出しをしているHTMLファイルを表示するたびに(search.cgiを実行するた
びに),フレームを再構築してcargo.cgi?_mode=underで呼び出していました.現在は修
正しましたので,恐らくは解決したと思います.
 ところで,買い物を途中で止めた場合は,サーバにはCGIのメモリが開放されないま
まで残ってしまうのでしょうか?
回答者 呑兵衛@大阪  [削除]  投稿日 2/7(木) 23:07:24
> ところで,買い物を途中で止めた場合は,サーバにはCGIのメモリが開放されないま
> まで残ってしまうのでしょうか?

perl は C などと違いスクリプトを書く上でメモリに気をつかう度合いはほとんどありません。
CGI は、HTMLデータを出力した段階でメモリは開放されますので、心配はいりません。
但し、データ解析の途中
open (OUT, "$data");
@files = (<>);
close (OUT);
のようにして、$data をリストに取り込むような場合、$data の容量が膨大だったら、
サーバーに多いに迷惑がかかる恐れはあります。
質問者 稲田  [削除]  投稿日 2/15(金) 19:26:43
何度もご説明ありがとうございます.

> CGI は、HTMLデータを出力した段階でメモリは開放されますので、心配はいりません。

 少し安心しました.CGI-RESCUEへお問い合わせした場合も同じ事を伺いました.


> のようにして、$data をリストに取り込むような場合、$data の容量が膨大だったら、
> サーバーに多いに迷惑がかかる恐れはあります。

 この事に関してはもう一度見てみます.


色々と教えていただきありがとうございました.

このページは終了したので返信(回答)は書きこめません

Web裏技