컴파일 시 SASL 인증 옵션이 활성화되어 있어도 사용자 이름과 비밀번호를 설정할 방법이 없습니다.
* 커스텀 드라이버 생성자 Closure를 등록하세요.
* 새로운 캐시 저장소 인스턴스를 생성하세요.
* Memcached 캐시 드라이버의 인스턴스를 생성합니다.
*
* @return IlluminateCacheMemcachedStore
*/
보호된 함수 createMemcachedDriver()
{
$servers = $this->app['config']['cache.memcached'];
$memcached = $this->app['memcached.connector']->connect($servers);
$this->repository(new MemcachedStore($memcached, $this->getPrefix()));
반환
}
먼저 구성 파일에서 정의한 Memcached 서버를 읽은 다음 Memcached 객체를 생성합니다(실제로 표준 Memcached 객체를 생성하는 IlluminateCacheMemcachedConnector를 통해 구현된 다음 Memcached의 addServer 메소드를 호출하여 연결할 서버를 지정합니다) . 그런 다음 인스턴스화된 Memcached 개체 )
를 반환합니다.
나만의 캐시 드라이버 확장
위의 배경 지식을 이해한 후에는 자신만의 캐시 드라이버를 확장할 수 있습니다. 아이디어는 다음과 같습니다.
1. app/config/cache.php 파일에 "sasl 인증 사용 여부", "sasl 인증 계정", "sasl 인증 비밀번호"를 설정하는 세 가지 구성 항목을 추가합니다.
2. bootstrap/start.php 파일에서 Cache::extend 메서드를 호출하여 드라이버를 확장합니다.
3. app/config/cache.php 파일에서 드라이버 구성 항목을 수정하고 시스템이 자체 확장 드라이버를 사용하도록 지정합니다.
구성 항목 추가
먼저 app/config/cache.php 파일을 열고 다음을 찾습니다.
'memcached' => 배열(
array('호스트' => '127.0.0.1', '포트' => 11211, 'weight' => 100),
),
수정됨:
'memcached' => 배열(
array('호스트' => '127.0.0.1', '포트' => 11211, 'weight' => 100),
),
'memcached_sasl' => 'true', // sasl 인증 활성화
'memcached_user' => '귀하의 ocs 사용자 이름', // 귀하의 OCS 사용자 이름
'memcached_pass' => '귀하의 ocs 비밀번호', // 귀하의 OCS 비밀번호
드라이버 확장
그런 다음 bootstrap/start.php 파일을 열고 마지막 줄에 $app을 반환하기 전에 코드를 삽입하세요.
// 시스템 자체 Memcached 캐시 드라이버를 기반으로 saslMemcached라는 캐시 드라이버를 확장합니다
캐시::extend('saslMemcached', function($app){
// 구성 파일에서 Memcached 서버 구성을 읽습니다.
$servers = $app['config']['cache.memcached'];
//IlluminateCacheMemcachedConnector 클래스를 사용하여 새로운 Memcached 객체를 생성합니다
$memcached = $app['memcached.connector']->connect($servers);
// 서버의 PHP Memcached 확장이 SASL 인증을 지원하는 경우
If(ini_get('memcached.use_sasl')){
// 구성 파일에서 sasl 인증 사용자 이름 읽기
$user = $app['config']['cache.memcached_user'];
//구성 파일에서 sasl 인증 비밀번호 읽기
$pass = $app['config']['cache.memcached_pass'];
// Memcached 압축 비활성화(이 작업은 Alibaba Cloud 문서에서 수행됩니다...)
$memcached->setOption(Memcached::OPT_COMPRESSION, false);
// 바이너리 프로토콜을 사용하도록 Memcached 지정(SASL 인증 요구 사항)
$memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
// sasl 인증에 사용되는 계정 비밀번호를 지정합니다.
$memcached->setSaslAuthData($user, $pass);
}
// 구성 파일에서 캐시 접두어를 읽습니다.
$prefix = $app['config']['cache.prefix'];
//MemcachedStore 객체 생성
$store = 새로운 IlluminateCacheMemcachedStore($memcached, $prefix);
//Repository 객체를 생성하고
을 반환합니다.
새로운 IlluminateCacheRepository($store)를 반환합니다.
});
구성을 수정하고 자체 확장 캐시 드라이버를 사용하세요
app/config/cache.php 파일을 열고 다음을 찾으세요.
"driver" => "file", // 기본값은 파일 캐시를 사용하는 것입니다
수정됨:
"driver" => "saslMemcached", // 방금 확장하여 구현한 드라이버 이름
이제 Laravel이 Alibaba Cloud ECS 서버에서 Alibaba Cloud OCS 캐시 서비스를 사용하도록 할 수 있습니다. ( 전제는 귀하의 PHP가 Memcached 확장을 지원하고 SASL 인증이 활성화되어 있다는 것입니다.
http://help.aliyun.com/doc/view/13553932.html을 참조하세요.