• 締切済み

カウンターが重い

アクセスカウンターを作ってみたんですが、重いんでなるべく軽くしようと試行錯誤しているんですが、上手い手を思いつきません。何か良いては無いでしょうか? ちなみに、各ページごとのカウントをとりたいので、 <img src="****.cgi" width=0 height=0></img> として埋め込んでます。(もしかしてこれが悪い?) 後で見やすくしかも、簡単にとおもいテキストに日付毎に入れてるんですが、軽くするためにどうしてもやりたいけどやり方が分からないのが二つあります。 1.テキストファイルの上に行を付け足す。  今は中身を一回全部@に入れて”unshift”で最初に付け足して再度書き込むという非常にめんどくさい方法をしてます。  出来れば”seek”か何かで最初だけ読み込み、そこだけ変更するかその上(前?)に付け足方法が分からないんです。 2.もしくはテキストファイルの一番下を読み込む。  上が出来ないとき、一番下を読み込んで書き換えるか追加書き込みで付け足すということをしたいんです。  しかし、徐々に増えていく行の一番下を上手く読み込む方法と、全部を読み込まずに一番下だけ書き換えする方法が分からないんです。 これ以外に軽くするいい方法があるか、上の難問(?)が分かる方、回答ください。

みんなの回答

  • rokujiro
  • ベストアンサー率53% (17/32)
回答No.4

無理に自分で作成せず実績の有るフリーのCGIを使用する事をお勧めします。 検索エンジンで CGI カウンタ 複数 等で検索するといくつか出てくると思います。 あと、ひとつのログファイルで複数のページのカウンタを取ろうとしているようですが逆に複数のログファイルを作成し、それをひとつのCGIで管理すると言う方法は如何でしょうか!? counter.cgi?file=site1 counter.cgi?file=site2 といった形です。 如何でしょうか!?試してみる価値はあると思います。

zeyper
質問者

お礼

返事が遅れてすいません。 回答ありがとうございます。説明が不明確だったようなので少し補足します。 複数のページのログを一つのログファイルでとろうとはしていません。 (そうすると排他処理の関係もあって、遅くなるだろうし動作が不安定になりそうだから) ですから、一つのページに一つのログファイルなのですが、そこに過去のログも保存しておきたいと思っています。(一日単位で) しかし、全部を読み込んで一部を変えるのは出来るのですが、いちいち全部を読み込むのは時間のロスになるので、最新の日付だけを読み込んで、同じ日付だとその日のカウントを1上げる。違う日付だと新しく付け加えるという作業をさせたいのですが、それが上手くいきません。 それを何とかする方法を教えてもらいたいんです。 これでなんとか上手くいったら、書かれているような方法でアクセス集計をしたいと目論んでいるんですが、なにぶんそこまでがなかなか行かなくて(笑)

全文を見る
すると、全ての回答が全文表示されます。
  • caramel
  • ベストアンサー率34% (10/29)
回答No.3

答えとしてはどうかとは思いますが、、お使いのプロバイダは「CGIに強い」ところでしょうか? perlのことはぜんっぜん判りませんが、同じスクリプトを設置してもプロバイダによって表示速度は全く違います。 もちろんご存じの上で解決法をお探しのこととは思うのですが、、、 同じスクリプトを数カ所に設置した実験をしたことがあるものとしての体験談でした。自分の使った中ではやはりドルフィンネットでしたが、、 勉強のため皆様のご回答を私も拝見させていただきたく思います。お邪魔いたしました。

参考URL:
http://www.din.or.jp
zeyper
質問者

お礼

返事が遅れてすいません。 「CGIに強い」というのは、プロバイダ側のサーバーのスペックとか、そこに置かれてるCGI等の数のことによって決まることだと思うんですけど・・・・ (それともサーバーのOSや、ハードの種類やそれ以外?) とりあえず、まだサーバーの方には上げてません。自分のPCにHTTPDを入れて擬似サーバーにして、そのPC上で動かしてます。 掲示板や自作、他作のCGIを動かしていたんですが、自作カウンターを動かした時、掲示板などより重くて、”何で?たいした処理して無いじゃん!!なんか書き方おかしかった?” とちょっとパニくってました(笑) 自分で解決法を考えたんですが(質問に書いたこと)、どうやればそれを実行できるか分からなくて質問したんです。 なにか分かったらまた書き込んでください。

全文を見る
すると、全ての回答が全文表示されます。
回答No.2

私もPerlは初心者なので詳しいスクリプトは解りません。 ご希望に添えるかは分かりませんが、現在のカウント数と過去の カウント数がわかればよいのであればファイルをカウンタ用の ファイルと、ログ用のファイルの二つに分けてはどうでしょうか? つまり 1.アクセスされたときカウンタ用ファイルの日付と現在の日付を比較 2.日付が変わっていたらログ用ファイルの末尾にカウント数を追記 3.カウンタ用ファイルを新しいカウンタ数で置き換える といった流れです。 今までの処理速度とファイルを余計に開く時間どちらが効率が 良いかは不明ですが・・・

zeyper
質問者

お礼

返事が遅れてすいません。なにぶん家のPCではないもので・・・(家のは古くてオブジェとなってる(笑)) 結構盲点の内容でした、目からウロコが2・3枚落ちた感じです。 早速試してみます。

全文を見る
すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.1

 妥協してでも軽くしたい、ということであれば、SSIにしてテキスト文字でカウンタを付ける手があります。  スタイルシートなんかを使えば、テキスト文字でもそこそこカッコいいカウンターになりますし。  お使いのプロバイダはSSIは使えますか?

zeyper
質問者

お礼

さっそくの回答ありがとうございます。 残念ながらSSIは使えないんです。 セキュリティの面で許可してないそうなんです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • カウンター

    CGI(Perl)を勉強中の初心者です。 自作のグラフィックカウンターのCGIをHTMLに貼り付けると、 カウンターは表示されるのですが、 HTMLでカウンターより下に配置してある画像が表示されません。(テキストはOK) CGIを貼るタグは<IMG src=".......cgi>としてあるのですが、 調べてみたところ、このタグ内でwidthとheightの属性を設定しないと このタグ以下のHTMLが表示されないことがあるとのことで、 属性も設定したのですが、やはり表示されません。 CGIスクリプトそのものに問題があるのでしょうか。 よろしくお願いいたします。

    • 締切済み
    • CGI
  • 並べた画像ファイルに不要なスペース行が入ってしまいます(HTML付き)。

    お世話になります。 下記のように、画像ファイルを2つ並べようと思っています。 +---------+ |隅.bmp | +---------+ +---------+ |隅.bmp | +---------+ ただ、上の画像に左側にスペースを入れると、なぜか2つの画像の 間に細いスペース行が入ってしまいます。 この2つの画像の間のスペース行を無くす方法はありますか? <p><img border="0" src="隅.bmp" width="160" height="160"><br> <img border="0" src="隅.bmp" width="160" height="160"><br>  ↓↓↓ <p>&nbsp;<img border="0" src="隅.bmp" width="160" height="160"><br> <img border="0" src="隅.bmp" width="160" height="160"><br> よろしくお願いします。

  • Perlについてご教示お願い致します。

    Perl初心者です。ご教示お願い致します;; ~text.txt~ 3,name,text 2,あ,あ 1,あ,あ 上記のようなテキストファイルがあり、 my $NAME = $form->param('name'); my $TEXT = $form->param('text'); unshift(@DATA,"$NO,$NAME,$TEXT\n"); と、略してますが、 NAMEとTEXTは、ページフォーム内のテキストを入力で CGI.pmを使用し、入力することはできました。 そこで、NOなのですが、次回入力する際、「4」と テキストファイルの1行目の1列目に+1した数字を 書き込むようにしたいのですが、 どのようにすればいいでしょうか? my $NO = $ここに1行目の1列目の数字 + 1; これを,unshiftの前に入れるまではわかるのですが、 「$ここに1行目の1列目の数字」 これがどう求めるのかわりません;;

    • ベストアンサー
    • Perl
  • ワードの行の入れ替え

    ワードで行を入れ替えるのに三段落あるとします。(例えば一番上が、あああ。二番目が、いいい。三番目が、ううう)一番上の行とすぐ下の行を入れ替えるのにマウスを使う場合は、一番上の行を範囲指定して一番下の、ううう、の最初に一番上のあああ、を移動させると一段落目と二段落目の行入れ替えができますが、何故一段落と二番段落を入れ替えるのに一番下の三段落の前に移動させるのですか?

  • css テキストの上下を中央位置に配置するには

    <div class="aaa"><img src="images/bbb.gif" width="40" height="40"/> &nbsp;ここのテキスト</div> ここでの class="aaa"ではマージンとheight="40" を指定しているだけです。 こうすると、挿入している画像の下付きのようにテキスト表示されてしまいます。 指定したheightの範囲内で、上下位置でのセンタリングをする方法はありますか? それとも、テキストに違うclassを指定して、paddingで調整するしか方法はないですか?

    • ベストアンサー
    • HTML
  • 画像横のテキストをセンターに配置したい

    HTML5, CSS3をベースに、添付画像(2)のような状態で作成したいなと思っております。 <ul> <li><a href="#"><img src="XXX.gif" alt="#" width="60" height="60">○○○○○</a></li> <li><a href="#"><img src="XXX.gif" alt="#" width="60" height="60">○○○○○○○○○○</a></li> <li><a href="#"><img src="XXX.gif" alt="#" width="60" height="60">○○○○○</a></li> </ul> HTMLはこんな感じでシンプルに。 特に何もしなければ、 (1)のように画像のベースラインとテキストのベースラインが同じ位置に配置されます。 テキストが2行になると画像の下にずれ込みます。 しかし(2)のようにテキストをセンターに配置したいなと。 テキストは多くても2行でとどめるつもりなので、 1行でも2行でもセンターになるようにしたい。 ではと思ってまず思い浮かんだのが画像を「float: left」すること。 でもそうするとテキストがベースラインから回避できますが、 センターにはいかず、画像のトップと同じ位置に配置されます。 テキストが1行なら、反強制でPタグでくくって 「margin: top」で調整することもできるかと思いましたが、 2行分は設定したいのです。 ちなみに画像のサイズは指定しておりますが、 li自体には横幅の設定はしていますが高さ設定はしていません。 実質画像の高さが高さになることになります。 簡単にできることかと思っていたのですが、思いのほか苦戦しております。 ご存知の方いらっしゃいましたら、ご教授いただければ幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CSS
  • jQuery 2つのsetInterval

    写真と文字を組み合わせたクロスフェードで行き詰りました。 2つ質問があります。 【質問1】 1番目のテキストがフェードイン→3秒待機→1番目のテキストと 1番目の写真がフェードアウト→2番目・3番目同じ→繰り返し。 という感じにしたいのですが、下記の#text-boxの設定ですと setIntervalで5秒間隔でフェードインになるので#photo-boxとの タイミングが5秒ずれてしまいます。 これを合わせるにはどうすればよいのでしょうか? 【質問2】 下記のように、1つのdivでテキストと写真を入れると正常に動かなくなります。 それぞれ分けてdiv(#text-box,#photo-box)で囲うと動きます。 この原因はなんでしょうか? <div id="all-box"> <p class="text">1番目のテキスト</p> <p class="photo"><img src="img/01.jpg" width="500" height="200" alt="" /></p> <p class="text">2番目のテキスト</p> <p class="photo"><img src="img/02.jpg" width="500" height="200" alt="" /></p> <p class="text">3番目のテキスト</p> <p class="photo"><img src="img/03.jpg" width="500" height="200" alt="" /></p> </div> 宜しくお願いします。 $(function(){ $("#text-box .text").hide(); setInterval(function(){ $("#text-box") .find(".text:first-child") .fadeIn(1000) .delay(3000) .fadeOut(1000) .next(".text") .end() .appendTo("#text-box"); },5000); $("#photo-box .photo:gt(0)").hide(); setInterval(function(){ $("#photo-box") .find(".photo:first-child") .fadeOut(1000) .next(".photo") .fadeIn(1000) .end() .appendTo("#photo-box"); },5000); }); ■HTML <div id="all-box"> <div id="text-box"> <p class="text">1番目のテキスト</p> <p class="text">2番目のテキスト</p> <p class="text">3番目のテキスト</p> </div> <div id="photo-box"> <p class="photo"><img src="img/01.jpg" width="500" height="200" alt="" /></p> <p class="photo"><img src="img/02.jpg" width="500" height="200" alt="" /></p> <p class="photo"><img src="img/03.jpg" width="500" height="200" alt="" /></p> </div> </div> ■CSS #all-box{ position:relative; width:500px; height:200px; } #text-box,#photo-box{ width:500px; height:200px; } #text-box .text{ position:absolute; top:80px; left:0; z-index:2; } #photo-box .photo{ position:absolute; top:0; left:0; width:500px; height:200px; z-index:1; }

  • 文章を、画像の縦方向の位置の中心に置きたい

    CSSを使ってwebページのレイアウトをしています。 画像の高さの真ん中あたりに、文章を配置したいのですが、方法を教えてください。 「vertical-align:middle;」で指定してみたら1行の文ではうまく行ったのですが、複数行になるとうまくいきません。 どうすれば、複数行の文章で上手く指定できるでしょうか。 [ソース] <style> .test{ width:530px; height:263px; background-color:#ffcccc; font-size:10pt; } img{ vertical-align:middle; } </style> <div class="test"> <p> テキスト<br> テキスト<br> テキスト<strong>テキスト</strong>テキスト<br> <img src="画像のURL"width="250" height="259" alt="画像の名前"> </p> </div>

    • ベストアンサー
    • CSS
  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • スクリプト作成

    VBScript言語を使用して、前回読込んだテキストファイルの 次の行から読込むスクリプト作成について教えて下さい。 perl言語でseek関数について Webで見つけました。 VBScript言語で可能でしょうか。またSeek関数使用できるのでしょうか。 教えて頂けますでしょうか。

このQ&Aのポイント
  • パソコンから印刷やコピーをする際、MG5330で白い線が入ったように印刷されない部分があります。トナーを交換しても改善されない場合、修理が必要です。
  • MG5330で印刷やコピーをすると、特定の箇所に白い線が入ってしまいます。トナーカートリッジを取り外して確認してみてください。もし、トナーカートリッジに問題がない場合は、プリンターヘッドの清掃を試してみてください。
  • MG5330の印刷やコピーで白い線が入る場合、トナーカートリッジの問題やプリンターヘッドの汚れが考えられます。まずはトナーカートリッジを確認し、交換してみてください。それでも改善されない場合は、プリンターヘッドの清掃を行ってみましょう。
回答を見る

専門家に質問してみよう