cakephp1.2流のエレメントキャッシュ

サイドメニューなど、エレメントの部分だけキャッシュしたかったので、
マニュアルの3.9.3.2 エレメントをキャッシュするを見て、実装したのですが、
コントローラ側からCache::read();としても反応なし。
・・・?と思いながらview.phpを眺めていると、以下の記述が。。。

PHP:
  1. if ($expires) {
  2.     $cacheFile = 'element_' . $key . '_' . $plugin . Inflector::slug($name);
  3.     $cache = cache('views' . DS . $cacheFile, null, $expires);
  4.     if (is_string($cache)) {
  5.         return $cache;
  6.     }
  7. }

あれ、cache();って1.1のやつだから非推奨のはずじゃぁ。。。
ってことで、cakephp1.2流のelementキャッシュを考えてみた。

●view側

PHP:
  1. <?php
  2. echo $this->;element('left_menu');
  3. ?>;

の代わりに以下を挿入

PHP:
  1. <?php
  2. if(($element = Cache::read('left_menu', 'element')) === false){
  3.     $element = $this-&gt;element('left_menu');
  4.     Cache::write('left_menu', $element, 'element');
  5. }
  6. echo $element;
  7. ?>

●コントローラ側
beforeFilterなどでエレメントキャッシュを定義し、
キャッシュが存在しない場合に限り、クエリを発行する。

PHP:
  1. $config = array(
  2.     'engine' =&gt; 'File',
  3.     'duration'=&gt; '+5 min',
  4.     'path' =&gt; CACHE . 'views' . DS,
  5.     'prefix' =&gt; 'element_'
  6. );
  7. Cache::config('element', $config);</code>
  8.  
  9. if( Cache::read('left_menu', 'element') === false ){
  10.     $areas = $this-&gt;Area-&gt;find('menu'));
  11.     $categories = $this-&gt;Category-&gt;find('menu'));
  12.     $this-&gt;set(compact('areas', 'categories'));
  13. }

これで劇早&1.2流のキャッシュができましたー!

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

CentOSでmod_rails(Passenger)のインストール

仕事先でmod_railsを使う機会があったのでインストールしてみました。
mod_railsは何かというと、ruby on railsをapacheのモジュールとして起動する事により
効率を大幅に上げよう、というものです。
また、特定数秒(デフォでは120秒)アクセスがないと、自動的にプロセスが終了したり、
アクセスが多いと増加するので、単純にmongrelをたくさん起動しておくよりも効率的です。
以前はApache+mongrel_railsでしたが、明らかにレスポンスが向上しました。
では早速インストールの記録を。
[...]

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS

データベースが文字化けしたら…

CakePHPで開発している際に、phpmyadminなどでデータベースの中身を表示させようとすると、
文字化けする事があります。
これは、CakePHP内のdatabase.phpに記述が足りない事が原因の模様。。。

PHP:
  1. var $default = array(   'driver' => 'mysql',
  2.             'connect' => 'mysql_connect',
  3.             'host' => 'localhost',
  4.             'login' => 'root',
  5.             'password' => '',
  6.             'database' => 'encodetest',
  7.             'encoding' => 'utf8', ←この部分を追加
  8.             'prefix' => '');

(前のデータは化けてしまいますが、)これで新規データ分については文字化けが起こらないようになりました。
参考:続・CakePHPと文字化け (PHP学習日記)

  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • Twitter
  • RSS
 Page 4 of 7  « First  ... « 2  3  4  5  6 » ...  Last »