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) ""
}
}
申し訳ありません。しかし、私はこれについて何か考えていただければ幸いです。
乾杯。
は、少なくともこの条件 '場合(の$ this - > cache-> memcached-に入っています> is_supported()){'...あなたはApacheサービスを再起動しましたか?...時々キャッシュを使用すると、変更を反映するためにApacheサービスを再起動する必要があります:) – Hackerman
Thanks @Hackerman!ちょうどそれを試みたが、同じ出力。歓声 – grpaiva
どのようにあなたのMMMルーティングを管理しているのですか?最初にすべてのhttp要求をキャッシュサーバーにリダイレクトするファイアウォールルールを持っていましたか? – Hackerman