windevalley/laravel-memcached-plus

扩展了内置的 Laravel 5 Cache Memcached 驱动,增加了对持久连接、SASL 和 Memcached 选项的支持。

2.1.5 2015-03-06 19:17 UTC

This package is not auto-updated.

Last update: 2024-10-02 19:16:29 UTC


README

摘要

与云 Memcached 服务(如 MemCachiermemcached cloud)集成可能需要 Memcached 功能,这些功能在内置的 Laravel 5 Cache Memcached 驱动中不可用。

包括

  • SASL 认证
  • 自定义选项
  • 持久连接

添加 3 个新的配置项,此软件包 增强 了内置的 Laravel 5 Cache memcached 驱动。可选地,此软件包还允许使用这些额外的配置项来为 memcached Sessions 配置。

请继续阅读详细说明 - 您可能需要同时参考 演示应用程序

更新:有关我提交给 laravel/framework 的 PR 的详细信息,请参阅 此处

要求

  • = PHP 5.4 且带有 ext-memcached

  • 要使用 SASL,它必须编译带有 SASL 支持。这是 Heroku 上的默认设置。

安装

可在 Packagist 上作为 Composer 软件包安装,您只需执行以下操作:

composer require b3it/laravel-memcached-plus

如果您的本地环境不符合要求,您可能需要附加 ignore-platform-reqs 选项

composer require b3it/laravel-memcached-plus --ignore-platform-reqs

配置

安装后,您可以使用此软件包增强 Laravel CacheSession 服务。

服务提供者

本节讨论 Laravel 应用程序配置文件 app/config.php

providers 数组中,您需要替换以下内置服务提供者

  • Illuminate\Cache\CacheServiceProvider 和(可选)
  • Illuminate\Session\SessionServiceProvider

建议的做法是注释掉内置提供者并添加此软件包的提供者

'providers' => [
    ...
    //'Illuminate\Cache\CacheServiceProvider',
    ...
    //'Illuminate\Session\SessionServiceProvider',
    ...

    /*
     * Application Service Providers...
     */
     ...

    'B3IT\MemcachedPlus\CacheServiceProvider',
    'B3IT\MemcachedPlus\SessionServiceProvider',
],

在 Laravel 5.0.13 的全新安装中,提供者数组位于 app/config.php 的第 111 行。

B3IT\MemcachedPlus\SessionServiceProvider 是可选的。您只需要添加此提供者,如果您

  • 想要指定用于会话的 memcached 存储,或者
  • 想要使用此软件包提供的 memcached 功能进行会话

缓存

本节讨论 Laravel 缓存配置文件 config/cache.php

此软件包使以下额外的配置项可用于与 memcached 存储一起使用

这些可以在存储配置中这样使用

'stores' => [
    'memcachedstorefoo' => [
        'driver'  => 'memcached',
        'persistent_id' => 'laravel',
        'sasl'       => [
            env('MEMCACHIER_USERNAME'),
            env('MEMCACHIER_PASSWORD')
        ],
        'options'    => [
            'OPT_NO_BLOCK'         => true,
            'OPT_AUTO_EJECT_HOSTS' => true,
            'OPT_CONNECT_TIMEOUT'  => 2000,
            'OPT_POLL_TIMEOUT'     => 2000,
            'OPT_RETRY_TIMEOUT'    => 2,
        ],
        'servers' => [
            [
                'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100
            ],
        ],
    ],
],

在定义 options 时,应将配置键设置为字符串形式的 Memcached 常量名称。这样可以避免本地环境缺少 ext-memcached 并抛出关于未定义常量的警告。配置键会自动由 MemcachedPlus\MemcachedConnector 解析为 Memcached 常量,如果常量无效则抛出 RuntimeException

请注意,由于此包 增强 了内置的 Laravel 5 memcached Cache 驱动程序,驱动程序字符串仍然是 memcached

如果您不熟悉如何在 Laravel 中使用多个缓存存储,您可以从应用程序代码中以以下方式访问此存储

$value = Cache::store('memcachedstorefoo')->get('key');

会话

本节讨论 Laravel 会话配置文件 config/session.php

如果您使用 memcached 会话,您已将 driver 配置项设置为 'memcached'。

如果您已如上所述添加了 B3IT\MemcachedPlus\SessionServiceProvider,则可以使用 memcached_store 配置项。以下是将粘贴到您的会话配置文件中的新片段进行说明

    /*
    |--------------------------------------------------------------------------
    | Session Cache Store
    |--------------------------------------------------------------------------
    |
    | When using the "memcached" session driver, you may specify a cache store
    | that should be used for these sessions. This should correspond to a
    | store in your cache configuration options which uses the memcached
    | driver.
    |
    */

    'memcached_store' => 'memcachier',

laravel-memcached-plus 在行动中

我为您创建了一个 演示应用程序,您可以通过它了解此包如何与 Laravel 5 集成以及如何在 Heroku 上运行它。

与 laravel/framework 集成

我向 laravel/framework 提交了 2 个 PR,以将此包集成到框架本身

  • Memcached 持久连接、SASL 认证和自定义选项:#7987
  • Memcached 会话存储配置 #7988

然而,@taylorotwell 由于缺乏测试而关闭了它们。当有时间时,我计划添加测试并重新提交,但在此期间,如果有人希望贡献它们,请提交 PR。

支持

请告诉我您有任何评论或疑问。

谢谢!