イェイイェイ AA
なんかこのAA好きなのでメモ
プリキュアEDの方はこっち
イェイ!イェイ!イェイ!イェイ! イェイ!イェイ!イェイ!イェイ!
-=≡ ∩∧_∧∩ ∩∧_∧∩ ≡=-
-=≡ ヽ( ・ω・)/ ヽ(・ω・ ) / ≡=-
-=≡ ( / ヽ ) ≡=-
-=≡ ( ⌒) (⌒ ) ≡=-
-=≡ c し' ヽJ J .≡=-
-=≡ ∩∧_∧∩ ∩∧_∧∩ ≡=-
-=≡ ヽ( ・ω・)/ ヽ(・ω・ ) / ≡=-
-=≡ ( / ヽ ) ≡=-
-=≡ ( ⌒) (⌒ ) ≡=-
-=≡ c し' ヽJ J .≡=-
プリキュアEDの方はこっち
イェイ!イェイ!イェイ!イェイ!
♪ ∧__,∧.∩ ∧__,∧∩ ∧__,∧∩ ∧__,∧.∩ ∧__,∧∩
r( ・ω・ )ノ r( ・ω・ )ノ.r( ・ω・ )ノ r( ・ω・ )ノ r( ・ω・ )ノ
└‐、 / └‐、 / └‐、 / └‐、 / .└‐、 /
,J _ l ,J _ l ,J _ l ,J _ l ,J _ l
ヽ/ l | ヽ/ l | ヽ/ l | ヽ/ l | ヽ/ l |
し' し' し' し' し' ♪
♪ ∧__,∧.∩ ∧__,∧∩ ∧__,∧∩ ∧__,∧.∩ ∧__,∧∩
r( ・ω・ )ノ r( ・ω・ )ノ.r( ・ω・ )ノ r( ・ω・ )ノ r( ・ω・ )ノ
└‐、 / └‐、 / └‐、 / └‐、 / .└‐、 /
,J _ l ,J _ l ,J _ l ,J _ l ,J _ l
ヽ/ l | ヽ/ l | ヽ/ l | ヽ/ l | ヽ/ l |
し' し' し' し' し' ♪
閲覧数カウントのロジックってみんなどうしてんべ
普通のCMSやFAQシステムによくある「閲覧数:XXXX」の表示。
F5で読み込みなおすたびにカウントアップされるけど、あれって単純に表示されるたびにUPDATEしてるんだろうか・・、
その場合って負荷どんくらい耐えられるんだろうか、
もっとmemcacheとかみたいなスケールできるキャッシュとか使ってるのか・・
アメブロは一日数回更新されるっぽいので、
たぶん各鯖でバッチ回してアクセスログかトレースログからPV更新してるんでしょう。
などなどとかそんな疑問を抱いてしまったので、
FAQシステムでよく見るPhpMyFaqを分解してみよう。
あ、この記事は自分はこんな風にソース見てるよっていう紹介記事なので、ターミナル作業の参考までにっていうかんじです。
結論はphpmyfaqは直でUPDATEしていた!っていうことでした!
■ パッケージをいただく
本家サイトにお邪魔して、zipのURLを確認。 → http://www.phpmyfaq.de/
そのまま落としてwinscpとかで送るのも面倒なので、URLだけ確認したらwgetコマンドで頂戴します。
■ 解凍する
unzipコマンドで解凍できますが、たまにディレクトリ掘らずにファイルが直で圧縮されていて、そのまま解凍するとカレントディレクトリに展開されて、ファイルがカオスになる危険性を孕んでいるため、ちゃんと確認してから解凍しましょう。
■ さぁ記事を表示している部分はどこでしょう
とりあえずディレクトリを検索
というわけでコンテンツのURLを調べる。
phpMyFAQ.JP 日本語サイトはきっとこれ使ってくれているだろうという妄想を元に見ると、
http://www.phpmyfaq.jp/content/2/6/ja/ソフトの入手.html
っていうURLだったのできっとcontent的なものがキーワードなんだなということでcontent的なファイルを検索
adminみたいcssしかひっかからん!
んじゃRewriteRuleかなんかでURLルール変えているのだろうか。
ディレクトリの一番上にサンプルhtaccessっぽいファイルがあったのでチェキ
index.phpが集約されたエントリファイルになってるみたい。
action=artikelっていうのがすごくッポイので同じディレクトリに見つけたartikel.phpを見てみよう。
コメントに Shows the page with the FAQ record ・・・ とか書いてあるのできっとこれだ。
最初のほうにPMF_xxxx的なものをいっぱいgetInstanceしていて、さらに見ていると、
んじゃクラスはどこかな、と
そん中のlogViewsを呼んでいたので見てみると、
まずSELECTしてから、レコードがなかったらINSERT、あったらUPDATEみたいな処理があったので、
あぁ、これは単純派か、と調査終了。
■ おもったこと
単なるページ表示とかGETだけでDBのデータ弄るのに(負荷的なもので)ものすごい抵抗があるんだけど、
大規模なソーシャルサイトやゲームとかでもない限り、あんまり気にすることないのかな・・。
F5で読み込みなおすたびにカウントアップされるけど、あれって単純に表示されるたびにUPDATEしてるんだろうか・・、
その場合って負荷どんくらい耐えられるんだろうか、
もっとmemcacheとかみたいなスケールできるキャッシュとか使ってるのか・・
アメブロは一日数回更新されるっぽいので、
たぶん各鯖でバッチ回してアクセスログかトレースログからPV更新してるんでしょう。
などなどとかそんな疑問を抱いてしまったので、
FAQシステムでよく見るPhpMyFaqを分解してみよう。
あ、この記事は自分はこんな風にソース見てるよっていう紹介記事なので、ターミナル作業の参考までにっていうかんじです。
結論はphpmyfaqは直でUPDATEしていた!っていうことでした!
■ パッケージをいただく
本家サイトにお邪魔して、zipのURLを確認。 → http://www.phpmyfaq.de/
そのまま落としてwinscpとかで送るのも面倒なので、URLだけ確認したらwgetコマンドで頂戴します。
~package$ wget http://www.phpmyfaq.de/download/phpMyFAQ-latest.zip
--2012-05-03 16:40:26-- http://www.phpmyfaq.de/download/phpMyFAQ-latest.zip
Resolving www.phpmyfaq.de...
:
HTTP request sent, awaiting response... 200 OK
Length: 3938674 (3.8M) [application/zip]
Saving to: `phpmyfaq-2.7.5.zip'
100%[=========================================>] 3,938,674 759K/s in 5.1s
2012-05-03 16:40:34 (759 KB/s) - `phpmyfaq-2.7.5.zip' saved [3938674/3938674]
何回かリダイレクトされてゲット。--2012-05-03 16:40:26-- http://www.phpmyfaq.de/download/phpMyFAQ-latest.zip
Resolving www.phpmyfaq.de...
:
HTTP request sent, awaiting response... 200 OK
Length: 3938674 (3.8M) [application/zip]
Saving to: `phpmyfaq-2.7.5.zip'
100%[=========================================>] 3,938,674 759K/s in 5.1s
2012-05-03 16:40:34 (759 KB/s) - `phpmyfaq-2.7.5.zip' saved [3938674/3938674]
■ 解凍する
unzipコマンドで解凍できますが、たまにディレクトリ掘らずにファイルが直で圧縮されていて、そのまま解凍するとカレントディレクトリに展開されて、ファイルがカオスになる危険性を孕んでいるため、ちゃんと確認してから解凍しましょう。
~package$ unzip -l phpmyfaq-2.7.5.zip | head
Archive: phpmyfaq-2.7.5.zip
bbb7e31ca3c2d4ee575fdb3bedbe3278ab4276cf
Length Date Time Name
-------- ---- ---- ----
0 04-14-12 13:22 phpmyfaq-2.7.5/
6375 04-14-12 13:22 phpmyfaq-2.7.5/_.htaccess
5042 04-14-12 13:22 phpmyfaq-2.7.5/_httpd.ini
3970 04-14-12 13:22 phpmyfaq-2.7.5/_lighttpd.conf
4699 04-14-12 13:22 phpmyfaq-2.7.5/_nginx.conf
3196 04-14-12 13:22 phpmyfaq-2.7.5/add.php
~package$ unzip phpmyfaq-2.7.5.zip
Archive: phpmyfaq-2.7.5.zip
bbb7e31ca3c2d4ee575fdb3bedbe3278ab4276cf
Length Date Time Name
-------- ---- ---- ----
0 04-14-12 13:22 phpmyfaq-2.7.5/
6375 04-14-12 13:22 phpmyfaq-2.7.5/_.htaccess
5042 04-14-12 13:22 phpmyfaq-2.7.5/_httpd.ini
3970 04-14-12 13:22 phpmyfaq-2.7.5/_lighttpd.conf
4699 04-14-12 13:22 phpmyfaq-2.7.5/_nginx.conf
3196 04-14-12 13:22 phpmyfaq-2.7.5/add.php
~package$ unzip phpmyfaq-2.7.5.zip
■ さぁ記事を表示している部分はどこでしょう
とりあえずディレクトリを検索
~package/phpmyfaq-2.7.5$ find . -type d
admin~ みたいなのはいっぱおあるけど、それっぽいものは見つからぬ・・。というわけでコンテンツのURLを調べる。
phpMyFAQ.JP 日本語サイトはきっとこれ使ってくれているだろうという妄想を元に見ると、
http://www.phpmyfaq.jp/content/2/6/ja/ソフトの入手.html
っていうURLだったのできっとcontent的なものがキーワードなんだなということでcontent的なファイルを検索
~package/phpmyfaq-2.7.5$ find . -iname "*content*"
./admin/editor/plugins/spellchecker/css/content.css
./admin/editor/plugins/media/css/content.css
:
./admin/editor/plugins/spellchecker/css/content.css
./admin/editor/plugins/media/css/content.css
:
adminみたいcssしかひっかからん!
んじゃRewriteRuleかなんかでURLルール変えているのだろうか。
ディレクトリの一番上にサンプルhtaccessっぽいファイルがあったのでチェキ
~package/phpmyfaq-2.7.5$ grep -n content _.htaccess
4:# The contents of this file are subject to the Mozilla Public License
49:# the add content page
50:RewriteCond %{REQUEST_URI} addcontent\.html$ [NC]
96:# * http://[...]/content/1/1//.htm
97:# * http://[...]/content/1/1//.html
98:RewriteRule content/([0-9]+)/([0-9]+)/([a-z\-]+)/(.+)\.htm(l?)$ index.php?action=artikel&cat=$1&id=$2&artlang=$3 [L,QSA]
これだ!4:# The contents of this file are subject to the Mozilla Public License
49:# the add content page
50:RewriteCond %{REQUEST_URI} addcontent\.html$ [NC]
96:# * http://[...]/content/1/1/
97:# * http://[...]/content/1/1/
98:RewriteRule content/([0-9]+)/([0-9]+)/([a-z\-]+)/(.+)\.htm(l?)$ index.php?action=artikel&cat=$1&id=$2&artlang=$3 [L,QSA]
index.phpが集約されたエントリファイルになってるみたい。
action=artikelっていうのがすごくッポイので同じディレクトリに見つけたartikel.phpを見てみよう。
コメントに Shows the page with the FAQ record ・・・ とか書いてあるのできっとこれだ。
最初のほうにPMF_xxxx的なものをいっぱいgetInstanceしていて、さらに見ていると、
~package/phpmyfaq-2.7.5$ vi artikel.php
:
70 $faqVisits = PMF_Visits::getInstance();
71 $faqVisits->logViews($faq->faqRecord['id']);
:
的なものが。たぶんこれかね。:
70 $faqVisits = PMF_Visits::getInstance();
71 $faqVisits->logViews($faq->faqRecord['id']);
:
んじゃクラスはどこかな、と
~package/phpmyfaq-2.7.5$ grep -r PMF_Visits * | grep class
inc/Visits.php:class PMF_Visits
:
あった。inc/Visits.php:class PMF_Visits
:
そん中のlogViewsを呼んでいたので見てみると、
まずSELECTしてから、レコードがなかったらINSERT、あったらUPDATEみたいな処理があったので、
あぁ、これは単純派か、と調査終了。
■ おもったこと
単なるページ表示とかGETだけでDBのデータ弄るのに(負荷的なもので)ものすごい抵抗があるんだけど、
大規模なソーシャルサイトやゲームとかでもない限り、あんまり気にすることないのかな・・。
方向音痴なのか帰巣本能なのか
今日の帰り、中原街道沿いよりもちょっと目黒線沿いをまったりと走って帰ろうかなーと、ちょっと道を入ってみたんですが・・・、
夜で暗いこともあってか、しばらく進むと本当にコッチであってるのかな・・?とまっすぐ進むことに思いきれなくて曲がってしまい、ことあるごとに中原街道に戻ってきてしまうという謎の帰巣本能が働く上に、すげー戻ってきてしまうという方向音痴的なものまで発動。
五反田あたりからちょこちょこ頑張っているの図。
大きな地図で見る
・五反田から
不動前を目指そうと右曲がったけど、なんかでかい道にぶち当たって道なりに進んだら街道に復帰してしまった。
・荏原の交差点あたりの横道
街道横の道を悠々と走っていたら平塚橋の信号でまた合流してしまった。
・そこから武蔵小山方面へ
途中で不安になって折れる。
西小山駅前から旗の台交差点までの道は、桜並木みたいな道になっててちょっとイイカンジだった。
・大井町線を潜ったあたりから洗足へ
がんばって辿り着いた。
そこから大岡山、奥沢まではずっと線路沿いに。
・奥沢超えたあたりの行き止まり
道が完全に住宅街になってしまって意味不明に・・
環八に出るも環八と認識できず、ここどこだろなーと適当に横道走ったら超戻ってもうたw
・残りは平常運転
もうこれ以上はどうにもならないと諦めて丸子橋目指して通常ルート。
・・・・普通に帰った方がいろいろ楽かな( ´ω`)
夜で暗いこともあってか、しばらく進むと本当にコッチであってるのかな・・?とまっすぐ進むことに思いきれなくて曲がってしまい、ことあるごとに中原街道に戻ってきてしまうという謎の帰巣本能が働く上に、すげー戻ってきてしまうという方向音痴的なものまで発動。
五反田あたりからちょこちょこ頑張っているの図。
大きな地図で見る
・五反田から
不動前を目指そうと右曲がったけど、なんかでかい道にぶち当たって道なりに進んだら街道に復帰してしまった。
・荏原の交差点あたりの横道
街道横の道を悠々と走っていたら平塚橋の信号でまた合流してしまった。
・そこから武蔵小山方面へ
途中で不安になって折れる。
西小山駅前から旗の台交差点までの道は、桜並木みたいな道になっててちょっとイイカンジだった。
・大井町線を潜ったあたりから洗足へ
がんばって辿り着いた。
そこから大岡山、奥沢まではずっと線路沿いに。
・奥沢超えたあたりの行き止まり
道が完全に住宅街になってしまって意味不明に・・
環八に出るも環八と認識できず、ここどこだろなーと適当に横道走ったら超戻ってもうたw
・残りは平常運転
もうこれ以上はどうにもならないと諦めて丸子橋目指して通常ルート。
・・・・普通に帰った方がいろいろ楽かな( ´ω`)