簡體   English   中英

在 Laravel 上連接 2 個 Memcached 服務器

[英]Connect 2 Memcached servers on Laravel

我想將 Memcached 一個用於 session,另一個用於緩存

我試圖在 Config/cache.php 中執行此操作

'memcached' => [
    'driver' => 'memcached',
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
    'sasl' => [
        env('MEMCACHED_USERNAME'),
        env('MEMCACHED_PASSWORD'),
    ],
    'options' => [
        // Memcached::OPT_CONNECT_TIMEOUT => 2000,
    ],
    'servers' => [
        [
            'host' => env('MEMCACHED_HOST', '127.0.0.1'),
            'port' => env('MEMCACHED_PORT', 11211),
            'weight' => 100,
        ],
    ],
],

'memcachedz2' => [
    'driver' => 'memcached',
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
    'sasl' => [
        env('MEMCACHED_USERNAME'),
        env('MEMCACHED_PASSWORD'),
    ],
    'options' => [
        // Memcached::OPT_CONNECT_TIMEOUT => 2000,
    ],
    'servers' => [
        [
            'host' => env('MEMCACHED_HOST1', '127.0.0.1'),
            'port' => env('MEMCACHED_PORT1', 11211),
            'weight' => 100,
        ],
    ],
],

和我添加的 in.env 文件

CACHE_DRIVER=memcached
CACHE_PREFIX=areviwez_cache
SESSION_DRIVER=memcachedz2

MEMCACHED_HOST=35.192.75.119
MEMCACHED_PORT=11211


MEMCACHED_HOST1=127.0.0.1
MEMCACHED_PORT1=11211

我收到這個錯誤

Driver [memcachedz2] not supported

但它沒有用
有可能讓它像這樣工作嗎?

config/session.php中指定的 session 驅動程序與緩存驅動程序配置無關,因此將支持memcached (意味着使用 memcached session 驅動程序),但在您的情況下不支持memcachedz2 ,因為沒有 session 驅動程序定義為memcachedz2 (只有一個緩存驅動程序)。

您有 2 個選擇:

  1. 翻轉緩存驅動程序配置:
'memcached' => [
    'driver' => 'memcached',
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
    'sasl' => [
        env('MEMCACHED_USERNAME'),
        env('MEMCACHED_PASSWORD'),
    ],
    'options' => [
        // Memcached::OPT_CONNECT_TIMEOUT => 2000,
    ],
    'servers' => [
        [
            'host' => env('MEMCACHED_HOST1', '127.0.0.1'),
            'port' => env('MEMCACHED_PORT1', 11211),
            'weight' => 100,
        ],
    ],
],

'memcachedz2' => [
    'driver' => 'memcached',
    'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
    'sasl' => [
        env('MEMCACHED_USERNAME'),
        env('MEMCACHED_PASSWORD'),
    ],
    'options' => [
        // Memcached::OPT_CONNECT_TIMEOUT => 2000,
    ],
    'servers' => [
        [
            'host' => env('MEMCACHED_HOST', '127.0.0.1'),
            'port' => env('MEMCACHED_PORT', 11211),
            'weight' => 100,
        ],
    ],
],

在你的 .env 文件中:

CACHE_DRIVER=memcachedz2
CACHE_PREFIX=areviwez_cache
SESSION_DRIVER=memcached
  1. 通過在任何服務提供者的引導方法中添加以下內容來為memcachedz2定義緩存驅動程序:
 Session::extend('memcachedz2', function ($app) {
    return new CacheBasedSessionHandler(\Cache::driver('memcachedz2'), config(''session.lifetime'));
});

對於您相對簡單的用例,方法 1 可能是最簡單的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM