0

スクリプトは正常に動作し、データを設定していますが、Web サイトのコードはそれを使用できず、代わりに独自の memcached 値を設定しています。私のウェブサイトのコードは codeIgniter フレームワークで書かれています。なぜこれが起こっているのかわかりません。

私のスクリプトコード:-

function getFromMemcached($string) {

    $memcached_library = new Memcached();
    $memcached_library->addServer('localhost', 11211);
    $result = $memcached_library->get(md5($string));
    return $result;
}

 function setInMemcached($string,$result,$TTL = 1800) {
    $memcached_library = new Memcached();
    $memcached_library->addServer('localhost', 11211);
    $memcached_library->set(md5($string),$result, $TTL);
}

/*---------- Function stores complete product page as one function call cache -----------------*/
 function getCachedCompleteProduct($productId,$brand)
{
    $result = array();
    $result = getFromMemcached($productId." product page");


    if(true==empty($result))
    {
       //------- REST CODE storing data in $result------

            setInMemcached($productId." product page",$result,1800);    
    }
   return $result;      
}

ウェブサイト コード :-

private function getFromMemcached($string) {
    $result = $this->memcached_library->get(md5($string));
    return $result;
}

private function setInMemcached($string,$result,$TTL = 1800) {
    $this->memcached_library->add(md5($string),$result, $TTL);
}

/*---------- Function stores complete product page as one function call cache -----------------*/
public function getCachedCompleteProduct($productId,$brand)
{
    $result = array();
    $result = $this->getFromMemcached($productId." product page");


    if(true==empty($result))
    {
    // ----------- Rest Code storing data in $result

    $this->setInMemcached($productId." product page",$result,1800);     
    }
   return $result;      
}

これは memcached にデータを保存しています。if条件内に出力して最終結果を確認して確認しました

4

1 に答える 1

1

CodeIgniter のドキュメントに基づいて、次のものを利用できます。

class YourController extends CI_Controller() {
  function __construct() {
    $this->load->driver('cache');
  }

  private function getFromMemcached($key) {

    $result = $this->cache->memcached->get(md5($key));
    return $result;
  }

  private function setInMemcached($key, $value, $TTL = 1800) {
    $this->cache->memcached->save(md5($key), $value, $TTL);
  }

  public function getCachedCompleteProduct($productId,$brand) {
    $result = array();
    $result = $this->getFromMemcached($productId." product page");

    if( empty($result) ) {
      // ----------- Rest Code storing data in $result
      $this->setInMemcached($productId." product page",$result,1800);  
    }
    return $result;      
  }
}

サードパーティのライブラリがコア フレームワークに既に存在する場合は、個人的には避けるようにしてください。そして、私はこれをテストしました、それは見事に機能しているので、これを修正する必要があります:)

http://ellislab.com/codeigniter/user-guide/libraries/caching.html#memcachedの指示に従って、memcache サーバーの必要に応じて構成を設定することを忘れないでください。

于 2013-11-15T23:19:32.883 に答える