新しい(構成済みですぐに使用できる)を作成しようとするとZend\Cache\Storage\Adapter\Memcached
、エラーが発生します:
ファイル: [project]/vendor/zendframework/zendframework/library/Zend/Cache/Storage/Adapter/MemcachedResourceManager.php:52 メッセージ: ID 'default' のリソースがありません
Module
クラス
class Module implements ConfigProviderInterface, ServiceProviderInterface, AutoloaderProviderInterface {
...
public function getServiceConfig() {
try {
return array (
'factories' => array(
...
'Cache\Adapter\Memcached' => function ($serviceManager) {
$memcached = new Memcached($serviceManager->get('Cache\Adapter\MemcachedOptions'));
return $memcached;
},
'Cache\Adapter\MemcachedOptions' => function ($serviceManager) {
return new MemcachedOptions(array(
'ttl' => 60 * 60 * 24 * 7, // 1 week
'namespace' => 'cache_listener',
'key_pattern' => null,
'readable' => true,
'writable' => true,
'servers' => 'localhost',
));
},
'Search\Model\CityStorage' => function ($serviceManager) {
return new CityStorage(
$serviceManager->get('Search\Model\CityTable'),
$serviceManager->get('Cache\Adapter\Memcached')
);
}
)
);
}
...
}
...
}
Controller
クラス
class SearchController extends AbstractActionController {
...
public function searchCoursesAction() {
...
return new ViewModel(array(
...
'cities' => $this->getServiceLocator()->get('Search\Model\CityStorage')->getCities(),
));
}
...
}
Storage
クラス
<?php
namespace Search\Model;
use Zend\Cache\Storage\Adapter\AbstractAdapter;
use Search\Model\CityTable;
class CityStorage {
/**
* @var CityTable
*/
private $cityTable;
/**
* @var AbstractAdapter
*/
private $cacheAdapter;
public function __construct(CityTable $cityTable, AbstractAdapter $cacheAdapter) {
$this->cityTable = $cityTable;
$this->cacheAdapter = $cacheAdapter;
$this->cacheCities();
}
public function getCities() {
if (!$this->cacheAdapter->hasItem('cities')) {
$this->cacheCities();
}
return $cacheAdapter->getItem('cities');
}
private function cacheCities() {
// $cities = $this->cityTable->fetchAll()->toArray();
// $this->cacheAdapter->setItem('cities', $cities);
$this->cacheAdapter->setItem('test', 123);
}
}
それを機能させる方法は?
前もって感謝します!
編集:
MemcachedOptions
以上で設定は完了ですservers
(上記参照)。今それは動作します!
注:メソッドはなく、クラス内にのみ存在するため、 ではありservers
ません。server
setServer()
setServers()
Zend\Cache\Storage\Adapter\MemcachedOptions
ファイル: /var/www/itt/unisportr-zf/vendor/zendframework/zendframework/library/Zend/Stdlib/AbstractOptions.php:85 メッセージ: オプション "server" には、定義する必要がある一致する setServer セッター メソッドがありません