NP_cles()

123456789101112131415161718192021222324252627282930

Nucleus v3.31SP1向けCACHEMANAGER.php

 
投稿者:hsur 投稿日時:2008-04-06 - 02:18
カテゴリー:Patch - - トラックバック(0)- Views: 354

現行版(v3.31SP1 UTF-8)向けのパッチはないのかというリクエストが何件か来ているので、Nucleus v3.31SP1向けCACHEMANAGER.phpパッチを作成しました。patch形式での提供なので、あくまでpatchコマンドの使い方が分かる方向けです。

ダウンロードはこちら
nucleus331jp1-cachemanager.patch[1356clicks]
SHA1: 8fe40e2dd0f97b8887a17f87107c63b2b6eb09d6

いちおうココでも全く同じものを使っていますので、それなりに動くと思いますが、不具合があるようでしたら教えてもらえると助かります。

導入方法

1. パッチを当てる

Nucleusをインストールしたディレクトリにを置いてパッチコマンドを実行します。

$ patch -p1 < nucleus331jp1-cachemanager.patch

※コアファイルに改造を行っていない場合には、問題なくパッチが当たるはずです。
.rejができてしまった場合には手動でなんとかしてください。

2. キャッシュディレクトリのパーミッションを変える

デフォルトでは(Nucleusのインストールディレクトリ)/media/cachemanager/にキャッシュが入ります。
このディレクトリのパーミッションをウェブサーバが読み書き可能な状態*1に設定しておきます。

応用編: キャッシュの保持時間を変更する

キャッシュのデフォルトの保持時間は生成後7日間に設定されています。
キャッシュはライトスルー方式になっていますので、Nucleusを通じてDBをアップデートする際には、その保持時間に関わらず必要に応じて破棄されるようにしてありますので、設定を更新したにもかかわらず、古いデータが取得されることはありません。

保持期限はnucleus/libs/CACHEMANAGER.phpの上方で下記のように定義されています。指定の単位は秒です。

define('CACHEMANAGER_LIFETIME', 86400 * 7);

応用編: キャッシュディレクトリの場所を変更する

キャッシュが格納されるディレクトリは変更が可能です。
公開ディレクトリにキャッシュが格納されるのが嫌な場合にはこの方法が役立つはずです。

ファイルの格納場所はnucleus/libs/CACHEMANAGER.phpの上方で下記のように定義されています。
格納したい場所を絶対パスで記入します。

define('CACHEMANAGER_DIR', $DIR_MEDIA.'/cachemanager/');

応用編: memcachedを使う

このpatchではデフォルトではpearのCache_Liteを使うようにしていますが、専用サーバなどの場合にはキャッシュをmemcachedで管理することが可能です。*2

nucleus/libs/CACHEMANAGER.phpをnucleus/libs/CACHEMANAGER_MEMCACHE.phpで上書きします。memcachedの接続情報はnucleus/libs/CACHEMANAGER.phpの上方で下記のように定義されていますので、この部分を必要に応じて書き換えてください。

$memcache = memcache_pconnect('127.0.0.1', 11211);
  • *1: 通常は777、suExecの場合には700
  • *2: 元々、このパッチはそのために作られていますし、そのほうがパフォーマンスも高いはずです。

このエントリは役に立ちましたか?

     

トラックバックについて [policy]

Trackback URL:
Trackbacks
このエントリにトラックバックはありません

Comments [policy]

しづき [OpenID] wrote:

memcachedをインストールして試してみました

なぜか<%benchmark%>が表示するページ生成時間が倍近くなるようになってしまい…
なにか調整が必要でしょうか?
それと、これってキャッシュするのはオブジェクトだけですか?Arrayもキャッシュしてくれるんでしょうか?

2008-07-16 16:45 http://shizuki.kinezumi.net/  

hsur wrote:

特に調整は必要ないはずです。
うまくキャッシュされていないと、毎回DBを読みに行ってしまうので逆にそれで遅くなってしまうということはあると思いますが。あとはDBが激速だったりとか。。。

それと、これってキャッシュするのはオブジェクトだけですか?Arrayもキャッシュしてくれるんでしょうか?

memcache自体はPHPの任意のデータをキャッシュできますが、このパッチがキャッシュしているのは一部のオブジェクトや、DBから取り出した文字列(スキンとか、テンプレートとか、プラグインオプション)です。

2008-07-16 17:35  

さひろ [OpenID] wrote:

現行版(v3.31SP1 UTF-8)向けのパッチはないのかというリクエスト
さらにさらに、現行版(3.64)対応のパッチはないものでしょうか!<ぉ

いちおう手パッチしてみたものの、まぁうまくゆくはずもなく……。

hsur wrote:

さらにさらに、現行版(3.64)対応のパッチはないものでしょうか!<ぉ

使ってるよという話も聞かないので、今のところ現行版向けのパッチはないです。
要望があることは認識したので、気長にお待ちください。

2011-05-02 15:54  

hiddy wrote:

さらにさらに、現行版(3.64)対応のパッチはないものでしょうか!<ぉ

異様にnucleusが遅くなっており、色々対処しているのですが、私もあんまり解決しません。(さくらなので503も頻発。。)

cles::blogさんはすごく早いので、ぜひこのmemchacedとパッチ導入させていただきたいと思っています。

急ぎませんのでぜひ!お願いします!

2012-07-11 15:27  

hsur wrote:

hiddyさん

このサイトの速さを支えているのは主に NP_Cache によるとろころが大きいので、
こちらの導入を検討してみてください。
http://japan.nucleuscms.org...

# memcached パッチは memcached サーバが立てられないといけないので、
# おそらくレンタルサーバでは難しいと思います。

2012-07-11 22:50  

hiddy wrote:

アドバイスありがとうございます。
本家はダウンロード先が404でした。。。
探してみたのですが、

http://www.findthatzip.com/...

のファイル群で合っていますでしょうか。

お手数をおかけしてすいません。

2012-07-13 10:27  

hsur wrote:

確かにオリジナルが消えてますね。

web.archive.org にアーカイブが残っていました。
この中断に NP_Cache.zip があるので、これを使うのがよいと思います。
http://web.archive.org/web/...

2012-07-13 10:53  

Add Comments

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン