カテゴリ: CakePHP

CakePHP1.2でのキャッシュ処理の覚書

2159 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2010/01/13 06:06:27 カテゴリ: PHP, CakePHP
スポンサード リンク
CakePHP

個人的に運営しているサイトがあまりにも重くサイトのパフォーマンスチューニングをしないとと思ったまま放置していましたが、そろそろやらねばってことでCakePHPのキャッシュ機能を改めて調べて実装してみました。その覚書ということで書きます。

今回の目的

サイトの全体の遅延表示の解消が主な目的です。
アクセス数も多いと20万PV/日に近づく日もあり、DBにアクセスが走るページは特に大変なことになっていました。

キャッシュの方法

DBへのアクセスを減らしてサイトのパフォーマンス向上というところを狙っているわけですが、CakePHPのキャッシュでViewキャッシュやelementキャッシュ、オブジェクトのキャッシュは利用したことはありましたが、違う形で汎用的なものはないかと調べているとBehaviorを利用してModelのメソッドをキャッシュする方法が紹介されていたのでそれを参考にしました。

モデルでキャッシュ

CacheBehaviorというBehaviorを利用してモデルのメソッドというかfindメソッドのクエリーをキャッシュするというところを使いました。

今回参考にさせて頂いたサイトは以下です。

公開されているCacheBehaviorの機能としては、以下が想定されています。

  1. モデル内の任意のメソッドの結果をキャッシュする  (コントローラーなどの呼び出し側を修正することなく実現したい)
  2. キャッシュ有効期限を指定しない場合は、変数にキャッシュする(同一のリクエスト内で有効)
  3. モデルのデータ内容に変化(追加・更新・削除)があった場合には自動的にキャッシュをクリアする
  4. コントローラーからモデルのメソッドを呼び出す際にキャッシュを実装可能にする   (とはいえ、コントローラーからも制御したい)

導入手順

1.CacheBehaviorを導入

CacheBehaviorをアプリケーションディレクトリのmodels/behaviors/cache.phpとして配置します。
ソースはこちらより
使用したいmodelに$actsAsを指定します。

class SampleModel extends Model{
	var $actsAs	= array('Cache');
  ・
  ・
  ・

上記のブログでも書いてありますが、自分も楽してapp_model.phpに書いてしまってます。

2.findメソッドのオーバーライド

app_model.phpにてfindメソッドをオーバーライドします。
今回はこちらのブログを参考にしました。

追記:10/01/13 参考にしたのだと、fieldメソッドを利用した時に引数が旨く渡らなかったので修正。色々書き方はあると思いますが、ちょっとシンプルに。まだ直すとこはありますが、とりあえず。

    function find()
    {
	$args = func_get_args();
        if ($this->Behaviors->attached('Cache')) {
            if($this->cacheEnabled()) {
                $cacheSetting = Cache::settings();
                $cacheDuration = $cacheSetting['duration'];
                return $this->cacheMethod($cacheDuration, __FUNCTION__, $args);
            }
        }
   //     $parent = get_parent_class($this);
        return call_user_func_array(array('Model', __FUNCTION__), $args);
    }


以上でOK。モデルキャッシュをmemcachedでやってみたかったですが、レンタルサーバーなのでそれは出来ず。
それは、こちらのブログで。

感想

これはいい感じです。
現在専用サーバーかVPSへの移行も考えているのですが、とりあえず簡単に導入できたのでゆっくり良いところを探してみます。

その他関連サイト

 →ツイッターのフォローはこちら
スポンサード リンク
         

関連記事

CakePHP1.2ガイドブックがいよいよ

1112 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2009/06/16 23:23:01 カテゴリ: CakePHP
スポンサード リンク

CakePHP IRC集会は大成功だったらしい

1531 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2009/03/27 17:28:21 カテゴリ: CakePHP
CakePHP



CakePHPのIRC集会開催されるっていうのは知っていたんですが、参加しそこねましたorz


第一回CakePHP IRC集会は大成功! そしてまとめ



上記サイトでまとめを見ると、かなり濃い内容だったようで後悔・・・。
次回こそ。

 →ツイッターのフォローはこちら          

関連記事

[CakePHP]コントローラからモデルで使用するテーブル・DBを変更する

12922 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2009/03/24 18:55:52 カテゴリ: CakePHP


コントローラからモデルで使用するテーブルを操作したい場合があった。
色々調べてやりかたがわかったのでメモ。

まずは、おさらい

モデルで使われるDBの設定,テーブルはの命名規則通りの場合は特に設定の必要がない。

デフォルトで利用するDBの設定を変更する場合は、モデルに

var $useDbConfig = 'hoge';

と書けばconfig/database.phpで書いた $hoge のDBの設定が使われる。
指定がない場合は、$default 。

テーブルを指定する場合、

var $useTable = 'table_name';

テーブルを使わないモデルの場合は

var $useTable = false;

これらを動的に変更したい場合は、以下のやり方が使える。

コントローラからモデルが使用するテーブルを変更

$this->Model->setSource('table_name');

と書けばModelで利用されるテーブルを変更することが出来る。

コントローラからモデルが使用するDBを変更

モデルで使用されるDBを変更することも以下の方法で可能。

$this->Model->setDataSource('hoge');

※config/database.phpにて使用するDBの設定が記述してあること

モデルのインスタンス化のタイミングで設定

モデル

class Sample extends AppModel
{
    var $useDbConfig = false;
    var $useTable = false;
}
App::import('Model','Sample');
$Sample = new Sample(false,'table_name','hoge');

modelクラスのコンストラクト
第1引数:デファルトのID
第2引数:使用するテーブル
第3引数:使用するDB設定



ざっとしたメモなのでおかしなとこがあるかもです・・・。

 →ツイッターのフォローはこちら          

関連記事

「CakePHPによる実践Webアプリケーション開発」が出るらしい

1070 回閲覧 このエントリーをはてなブックマークする この記事のブックマークユーザー 永続的リンク2009/03/12 00:08:16 カテゴリ: CakePHP
CakePHP



CakePHPによる実践Webアプリケーション開発が今月末に発売とのこと。


内容紹介

PHPのフレームワークとして、プログラマから安定した支持を得ているCakePHPですが、これまで実際のプロジェクトでどのように使いこなすか、について詳細に書かれた書籍はありませんでした。

本書は、一通りCakePHPの基礎知識を有しているプログラマに向け、実際のプロジェクト(本書ではグループウェアのプログラミングを題材として解説します)において、CakePHP1.2をどのように使いこなすかを具体的に解説します。


著者紹介

安藤祐介(Yusuke Ando)
PHP カンファレンスなどのイベントにてCakePHP を紹介するプレゼンテーションを実施。著書に「CakePHPガイドブック」(共著)などがある。


岸田健一郎(Kenichiro Kishida)
CakePHP をAgile 開発の現場で活用するために、日々奮闘中。株式会社 永和システムマネジメント所属。他著に「Webアプリケーションテスト手法」(PHP、SimpleTestの章を担当)などがある。


新原雅司(Masashi Shinbara)
CakePHP のTips や勉強会での資料を自身のブログで公開中。著書に「CakePHP ガイドブック」(共著)がある。1x1有限会社 代表取締役



楽しみだね♪


 →ツイッターのフォローはこちら          

関連記事

<< 前のページ :: 次のページ >> ↑ページ上部へ

アクセスカウンター

今日 : 2 昨日 : 1

ブログ内容

主にウェブ関係のことを書いてます。たまにブレイクダンスとか他のことも書いています。

プロフィール

MICK

MICKです。

1983年1月24日生まれ。ウェブの世界にいるのは、偶然のようで必然なのかも。

好きなこと :
 挑戦すること。物事に没頭すること。勉強すること。
嫌いなこと :
 自慢話を聞くこと。人の悪口を言うこと。

運営サイト

      

カテゴリ一覧

サイト広告

オススメの書籍とか

感想

紹介

色々

最近のコメント

最新記事

注目記事

人気記事

最近の人気記事

人気の記事

関連サイト

運営サイト

色々

最近のトラックバック

-->