0

TL; DR:私はAWS ElastiCacheをセットアップし、EC2経由でSSH経由で接続しました。私は(同じEC2インスタンスで)私のCodeIgniterのアプリケーションに接続しようとすると、しかし、それは失敗し、に接続しようとしていますことを示していますCodeigniter MemcachedがAWS Elasticacheインスタンスに接続していない

["localhost:11211"] 

なぜ?それはすべきではない。だからここ

["****.****.sae1.cache.amazonaws.com:11211"] 

、バックグラウンドです:

私はCodeIgniterの2.1.4を使用していPHP 5.5と私が管理アプリケーションでは、と私は節約したいですMemcachedを使用しているElasticacheインスタンスのデータ

私のアプリケーションはElastic Beanstalk環境で実行されており、ElasticacheインスタンスはEBのEC2インスタンスと同じセキュリティグループに属しており、すべてのTCP接続を開くようにルールを設定しています。私は、自分のアプリケーション側で

#telnet ****.****.sae1.cache.amazonaws.com 11211 
Trying xx.xx.xx.xx... 
Connected to ****.****.sae1.cache.amazonaws.com. 

:私は、このインスタンスにSSHで接続する場合

memcached support  enabled 
Version     2.2.0 
libmemcached version 1.0.8 
SASL support   yes 
Session support   yes 
igbinary support  yes 
json support   yes 
msgpack support   no 

私はTelnetを使用してElasticacheインスタンスに接続することができます

Memcachedのは、私たちが実行しているのphpinfoを見ることができるように活性化されますこのようなアプリケーション/設定/ステージング/ memcached.phpを設定している:

<?php 
if (!defined('BASEPATH')) exit('No direct script access allowed'); 

$config = array(
    'default' => array(
     'host'  => '****.****.sae1.cache.amazonaws.com', 
     'port'  => 11211, 
     'weight' => 1 
    ) 
); 

とコントローラ上:

public function memcached(){ 
    $this->load->driver('cache'); 
    if($this->cache->memcached->is_supported()){ 
     $data = $this->cache->memcached->get('foo'); 
     if (!$data){ 
      echo 'cache miss!<br />'; 
      $data = 'bar'; 
      $this->cache->memcached->save('foo',$data, 60); 
     } 
     echo $data; 
     echo '<pre>'; 
     var_dump($this->cache->memcached->cache_info()); 
     echo '</pre>'; 
    } 
} 

と出力は常に、なぜ、私はElasticacheするローカルホストに接続しないようにしようとしていると言います?出力は次のとおりです。

cache miss! 
bar 
array(1) { 
    ["localhost:11211"]=> 
    array(24) { 
    ["pid"]=> 
    int(-1) 
    ["uptime"]=> 
    int(0) 
    ["threads"]=> 
    int(0) 
    ["time"]=> 
    int(0) 
    ["pointer_size"]=> 
    int(0) 
    ["rusage_user_seconds"]=> 
    int(0) 
    ["rusage_user_microseconds"]=> 
    int(0) 
    ["rusage_system_seconds"]=> 
    int(0) 
    ["rusage_system_microseconds"]=> 
    int(0) 
    ["curr_items"]=> 
    int(0) 
    ["total_items"]=> 
    int(0) 
    ["limit_maxbytes"]=> 
    int(0) 
    ["curr_connections"]=> 
    int(0) 
    ["total_connections"]=> 
    int(0) 
    ["connection_structures"]=> 
    int(0) 
    ["bytes"]=> 
    int(0) 
    ["cmd_get"]=> 
    int(0) 
    ["cmd_set"]=> 
    int(0) 
    ["get_hits"]=> 
    int(0) 
    ["get_misses"]=> 
    int(0) 
    ["evictions"]=> 
    int(0) 
    ["bytes_read"]=> 
    int(0) 
    ["bytes_written"]=> 
    int(0) 
    ["version"]=> 
    string(0) "" 
    } 
} 

申し訳ありません。しかし、私はこれについて何か考えていただければ幸いです。

乾杯。

+0

は、少なくともこの条件 '場合(の$ this - > cache-> memcached-に入っています> is_supported()){'...あなたはApacheサービスを再起動しましたか?...時々キャッシュを使用すると、変更を反映するためにApacheサービスを再起動する必要があります:) – Hackerman

+0

Thanks @Hackerman!ちょうどそれを試みたが、同じ出力。歓声 – grpaiva

+0

どのようにあなたのMMMルーティングを管理しているのですか?最初にすべてのhttp要求をキャッシュサーバーにリダイレクトするファイアウォールルールを持っていましたか? – Hackerman

答えて

1

のように、あなたのmemcached.phpファイルを変更してみてください。

$config['memcached'] = array(
    'hostname' => '****.****.sae1.cache.amazonaws.com', 
    'port' => 11211, 
    'weight' => 1 
); 

そして、あなたのmemcached機能に:

$this->load->driver('cache', array('adapter' => 'memcached', 'backup' => 'dummy')); 
+0

Dude。どうもありがとうございます。あなたの設定ファイルはそれをしました!私は自分の機能を編集する必要はありませんでした。乾杯! – grpaiva

+0

私は@ grpaivaを助けてうれしいです:) – Hackerman

+0

私はどのように自動ロードファイルでそれを行うことができますか? – Diego

関連する問題