PHP(ピー・エイチ・ピー)

【PHP】CodeIgniter データベースキャッシュ機能を利用

現在、

CodeIgniterを利用してシステムの開発を行っています。

 

それで、

大量のマスターデータを保存したデータベース(テーブル)から、

データを取得する処理が含まれるのですが、

毎回アクセスの度にデータベースにアクセスするのは勿体無いので、

キャッシュを利用したいですよね。

 

そんな場合は、

CodeIgniterには、

=============================
$this->db->cache_on();
=============================

が用意されています。

 

弊社は不動産業者さんのホームページを作成する機会が多いので、

沿線・駅データを扱う機会が多いです。

 

例えば、

沿線と駅のデータを保存したテーブルから、

特定の沿線に紐づく駅の一覧を取得した場合、

====================================================================
select * from trainテーブル where railwayline_cd = 沿線コード
====================================================================

というようなSQLクエリを実行させると思いますが、

駅なんてものは頻繁に増えたり減ったりするものではないので、

キャッシュを使ってやった方がいいです。

 

その場合には、

====================================================================
$this->db->cache_on();
$query = $this->db->query("select * from trainテーブル where railwayline_cd = 沿線コード");
====================================================================

とすれば、

キャッシュの利用が可能になります。

 

逆に、

頻繁に更新が行われるようなテーブルからデータを取得する場合には、

キャッシュが残ってしまうとマズイですね。

 

その場合には、

=============================
$this->db->cache_off();
=============================

を利用すれば、

キャッシュ機能をオフにする事が出来ます。

 

なので、

1つのスクリプトファイルの中で、

「ほとんど更新の無いテーブルからのデータ取得処理」

「頻繁に更新が行われるテーブルからのデータ取得」

が混在する場合には、

$this->db->cache_on(); //キャッシュをオンにする
$query = $this->db->query("select * from trainテーブル where railwayline_cd = 沿線コード");
if($query->num_rows() > 0){
foreach($query->result() as $row){

何らかの処理

}
}

$this->db->cache_off(); //キャッシュをオフにする
$query = $this->db->query("select * from mainテーブル where id = 一意となるID");
if($query->num_rows() > 0){
$res = $query->result();

何らかの処理

}

みたいなコードを書いてやれば、

多分OK!!

です。

 

あとは、

/application/config/database.php

の「cachedir」にキャッシュ用のディレクトリのパスを指定しておけば、

キャッシュが保存されていきます。

 

因みに、

database.phpの「cache_on」を「on」にしておけば、

デフォルトでキャッシュ機能をオンにしておくことも可能です。

この記事を書いている人
株式会社ディープ
名前足立拓也

メールアドレスadachi@deep-deep.jp

関連記事

最近の記事

  1. ドメインについて
  2. WP:WordPress(ワードプレス)
  3. URL設計(URLデザイン)
  4. URL「ディレクトリ名」と文字アンダースコア(_)とハイフン(-)
  5. SEO対策(外部ファイルの読み込み)
  6. URL リダイレクト
  7. インデックスされない
  8. 内部対策は必要?
  9. CMS(シーエムエス)
  10. SEO業者は必要?

Twitter

  • 個人で借りているサーバのIPアドレスが、なぜか「FortiGuard」のブラックリストに登録されてしまった。まっとうにサイト運用してたから、なんで登録されたかは不明。取り敢えず、「データベースから削除して」って依頼したから、すぐに… twitter.com/i/web/status/1…
    about 12時間 ago via Twitter Web App

アーカイブ

PAGE TOP