Codeigniter Memcached не подключается к экземпляру AWS Elasticache

TL; DR: Я установил AWS ElastiCache и подключился через SSH через EC2. Но когда я пытаюсь соединиться с моим приложением Codeigniter (в том же экземпляре EC2), оно терпит неудачу и показывает, что оно пытается соединиться с:

["localhost:11211"]

Зачем? Не должно ли это быть:

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

Итак, вот фон:

я использую Codeigniter 2.1.4 с PHP 5.5 в приложении, которым я управляю, и я хочу сохранить некоторые данные в экземпляре Elasticache, используя Memcached.

Мое приложение работает в среде Elastic Beanstalk, экземпляр Elasticache находится в той же группе безопасности, что и экземпляр EC2 EB, и я установил правило для открытия всех соединений TCP.

Memcached активирован, как мы видим, работает phpinfo:

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

Когда я запускаю SSH в этот экземпляр, я могу подключиться к экземпляру Elasticache, используя telnet:

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

На моей стороне приложения я настроил приложение / Config / постановка / 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>';
}
}

И на выходе всегда говорят, что я пытаюсь подключиться к localhost, а не к 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

Решение

Попробуйте изменить ваш memcached.php файл, как:

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

И по вашему memcached функция:

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

Другие решения

Других решений пока нет …