windevalley / laravel-memcached-plus
扩展了内置的 Laravel 5 Cache Memcached 驱动,增加了对持久连接、SASL 和 Memcached 选项的支持。
Requires
- php: >=5.4.0
- ext-memcached: *
- illuminate/cache: 5.*
- illuminate/session: 5.*
README
摘要
与云 Memcached 服务(如 MemCachier 和 memcached 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 Cache 和 Session 服务。
服务提供者
本节讨论 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 存储一起使用
persistent_id
- [Memcached::__construct
] (https://php.ac.cn/manual/en/memcached.construct.php) 解释了如何使用此功能sasl
- 用于Memcached::setSaslAuthData
options
- 请参阅Memcached::setOptions
这些可以在存储配置中这样使用
'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,以将此包集成到框架本身
然而,@taylorotwell 由于缺乏测试而关闭了它们。当有时间时,我计划添加测试并重新提交,但在此期间,如果有人希望贡献它们,请提交 PR。
支持
请告诉我您有任何评论或疑问。
谢谢!