![]() | |
![]() |
![]() ![]() ![]() ![]() |
![]() |
集計結果のプロットCGIを使って毎回集計する方法前の方法では,リアルタイムな集計は できません.ここでは,CGIからperlのスクリプトを起動してaccess_logの集 計をする方法を紹介します.前節で作った webplot.plに,htmlを出力する機能を追加しましょう. まず,前節と同様に最初に画像の場所のPATHを定義します.サーバ内での絶 対PATHと,httpdがアクセスする領域でのPATHが異なるので,これらを分け ておきます.
$abspathは,イメージファイルを置くディレクトリで,サーバ 上での絶対PATHで表します.$webpathはhttpdのルートから見たPATH で,URLの一部になります.このCGIが呼ばれた時点でのイメージファイルを作 成しますので,このイメージファイル及びこのファイルを置くディレクトリ は,httpdに書き込みの許可を与えておく必要があります. 全体の流れは,前節のスクリプトと同じです.
gnuplotでイメージを作った後,そのURLをHTMLにしてブラウザに返す部分 が新たに追加されます.ここをsubroutine generate_htmlとしています.
できあがったperlのスクリプトをcgi-binの中に置いておき,htmlドキュメ ントの中に次の様なリンクを作れば完成です. 一般に,イメージファイルはブラウザにキャッシュされるため,何度も続 けてブラウザからリクエストがあっても,イメージファイルの名前(上の例な らaccess.png)が同じなら,このイメージの中身が更新されてもブラウザはキャッ シュの内容を表示してしまい,毎回同じグラフが表示されます.これを避ける 簡単な方法は,毎回異なる名前でイメージを作成することです.perlはPIDを 変数$$に保持していますので,例えばこれを使って "access$$.png" とすれば 毎回異なるグラフを表示するようになります.但し,この方法だと次第にゴミ ファイルが溜って行く欠点がありますが.(ブラウザにキャッシュさせないように するheaderを送る方法もありますが,ここでは解説しません) |
![]() | |
![]() |
![]() ![]() ![]() ![]() |
![]() |