memcache サーバーと対話するためのクラスがあります。データを挿入、削除、取得するためのさまざまな機能があります。もともと各関数は を呼び出していましたmemcache_connect()
が、これは不要でした。たとえば、次のようになります。
mc->insert()
mc->get()
mc->delete()
3 つの memcache 接続を作成します。クラスのコンストラクトを作成することで、これを回避しました。
function __construct() {
$this->mem = memcache_connect( ... );
}
次に$this->mem
、リソースが必要な場所で使用するため、3 つの関数のそれぞれが同じmemcache_connect
リソースを使用します。
これは問題ありませんが、他のクラス内でクラスを呼び出すと、たとえば次のようになります。
class abc
{
function __construct() {
$this->mc = new cache_class;
}
}
class def
{
function __construct() {
$this->mc = new cache_class;
}
}
memcache_connect
1 つしか必要としないのに、まだ 2 つの呼び出しを行っています。
グローバルでこれを行うことができますが、必要がない場合は使用しないことをお勧めします。
グローバルの実装例:
$resource = memcache_connect( ... );
class cache_class
{
function insert() {
global $resource;
memcache_set( $resource , ... );
}
function get() {
global $resource;
return memcache_get( $resource , ... );
}
}
そうすると、クラスが何回呼び出されても、 への呼び出しは 1 回だけになりますmemcache_connect
。
これを行う方法はありますか、それともグローバルを使用する必要がありますか?