[PHP-users 24619] Re: アプリケーション変数
SUZUKI Mari
suzukim @ webquest.co.jp
2005年 2月 21日 (月) 13:27:05 JST
鈴木(ま)と申します。
‖▼ 2005/02/21 11:36:27ごろ、T.Masuda さまからのメール
‖ 「[PHP-users 24615] Re: アプリケーション変数」にて:
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
>>>PHP で、いわゆる「アプリケーション変数」というのは
>>>存在するのでしょうか?
>>
>> tomcatとかweblogicとかそういうAPサーバと比べればの話ですが、
>> phpはwebサーバ(特にapache)の機能拡張的な意味合いが強いですから、
>> 根本的な作動原理が違うのでそういうのは無いと考えたほうがよいでしょう。
>
> データベース上の変更されないデータをアプリケーション変数に
> キャッシュしておこうと考えていたのですが...残念です。
(1)もし環境が許すのであれば、Zend Performance Suite や
PHP Accelerator, eAccelerator などのPHP高速化ツール導入を
検討してみてはいかがでしょうか。
その手のツールには大抵、お望みの アプリケーションコンテキストに
あたる変数機能(共有メモリ機能)がついてたりします。
(少なくともeAcceleratorにはあります。
(http://zumomo.org/pc/pgm/php/eaccelerator/ とか参照)
インストール後、READMEにある
> eAccelerator API
> ----------------
> eaccelerator_put($key, $value, $ttl=0)
> puts the $value into shard memory for $ttl seconds.
> eaccelerator_get($key)
> returns the value from shared memory which was stored by
> eaccelerator_put() or null if it is not exists or was expired.
> eaccelerator_rm($key)
> removres the $key from shared memory
...などを試すとハッピーなことになるかと。)
★もちろんPHP標準機能ではありませんから、上記のプロダクトに
アプリケーションが依存してしまうという弊害はあります。
また、要インストールなので、レンタルサーバ等では使えないと
考えたほうがよいでしょう。
(2)さもなくば単純に、serialize()/unserialize()メソッドにて、所定の
ディレクトリに変数の値をファイル保存するようなクラスを自作する
手もあります。最も簡単には ファイル名=キー値 ぐらいの勢いで。
(たとえばPHPのセッション変数なんかも(デフォルトでは)単に
ファイルに保存してるだけですから、パフォーマンス的にさほど
気にすることもないかと。)
以上、よろしくお願いします。
┌───────────────────────────────
│(株)ウェブクエスト http://www.webquest.co.jp/
│ ウェブ開発事業部 Tel:03-5312-1722 Fax:03-5312-1723
│ 鈴木 まり suzukim @ webquest.co.jp
└┰──────────────────────────────
┗ The System Builder for Your Web Computing - WebQuest Corp.
PHP-users メーリングリストの案内