首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Laravel 擴充 Memcached 驅動支援阿里雲 OCS SASL 認證

     編輯:PHP 綜合知識

阿里雲 OCS(Open Cache Service)雖基於 Memcached 協定,但強制要求 SASL 認證。Laravel 內建驅動未暴露設定帳密的介面,本文示範如何透過 Cache::extend() 擴充驅動,在建立 Memcached 物件後呼叫 setSaslAuthData() 完成認證設定。

核心原理

Laravel 的 CacheManager::extend() 接受驅動名稱與建構閉包,閉包需回傳 Repository 實例。內建 createMemcachedDriver() 流程為:

  1. 讀取伺服器設定
  2. 透過 MemcachedConnector 建立 Memcached 物件
  3. 包裝為 MemcachedStore 並注入 Repository

我們在步驟 2 後、步驟 3 前插入 SASL 設定邏輯。

實作步驟

1. 修改設定檔

app/config/cache.php 新增三項設定:

'memcached_sasl' => 'true',
'memcached_user' => 'your_ocs_username',
'memcached_pass' => 'your_ocs_password',

2. 註冊自訂驅動

bootstrap/start.php:

Cache::extend('saslMemcached', function($app) {
    $servers = $app['config']['cache.memcached'];
    $memcached = $app['memcached.connector']->connect($servers);

    if (ini_get('memcached.use_sasl')) {
        $user = $app['config']['cache.memcached_user'];
        $pass = $app['config']['cache.memcached_pass'];

        $memcached->setOption(Memcached::OPT_COMPRESSION, false);
        $memcached->setOption(Memcached::OPT_BINARY_PROTOCOL, true);
        $memcached->setSaslAuthData($user, $pass);
    }

    $prefix = $app['config']['cache.prefix'];
    $store = new \Illuminate\Cache\MemcachedStore($memcached, $prefix);
    return new \Illuminate\Cache\Repository($store);
});

3. 切換驅動

'driver' => 'saslMemcached'

前置需求

  • PHP 編譯時啟用 --enable-memcached-sasl
  • OCS 實例已建立並獲取帳密
  • ECS 安全組放行 11211 埠

驗證方式

部署後執行 Cache::put('test', 'ok', 10),若無錯誤且 Cache::get('test') 回傳 ok 即代表連線成功。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved