b3it / laravel-memcached-plus
扩展了内置的Laravel 5 Cache Memcached驱动程序,增加了对持久连接、SASL和Memcached选项的支持。
Requires
- php: >=5.4.0
- ext-memcached: *
- illuminate/cache: 5.*
- illuminate/session: 5.*
Requires (Dev)
- mockery/mockery: ^0.9
- phpunit/phpunit: ^4.8|^5.7
README
摘要
此包适用于Laravel 5.0 - 5.2。从5.3版本开始,我提交给 laravel/framework
的两个PR已合并,因此此包的功能从Laravel 5.3版本起即可直接使用。
与云Memcached服务(如MemCachier 和 memcached cloud)集成可能需要5.0至5.2版本内置Laravel Cache memcached驱动程序中不可用的Memcached功能。
这些包括
- SASL认证
- 自定义选项
- 持久连接
添加3个新的配置项,此包可以 增强 内置的Laravel 5 Cache memcached驱动程序。可选地,此包还允许使用这些额外的配置项来配置memcached会话。
请继续阅读详细说明 - 您可能需要同时参考示例应用程序。
要求
-
= 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', // optional
],
B3IT\MemcachedPlus\SessionServiceProvider
是可选的。只有当您需要时才添加此服务提供者
- 您想指定一个非默认的memcached存储来用于会话,默认是“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' => [
Memcached::OPT_NO_BLOCK => true,
Memcached::OPT_AUTO_EJECT_HOSTS => true,
Memcached::OPT_CONNECT_TIMEOUT => 2000,
Memcached::OPT_POLL_TIMEOUT => 2000,
Memcached::OPT_RETRY_TIMEOUT => 2,
],
'servers' => [
[
'host' => '127.0.0.1', 'port' => 11211, 'weight' => 100
],
],
],
],
请注意,由于此包 增强了Laravel 5内置的memcached缓存驱动程序,驱动程序字符串仍然是memcached
。
如果您不熟悉如何在Laravel中使用多个缓存存储,您可以通过以下方式从应用程序代码中访问此存储
$value = Cache::store('memcachedstorefoo')->get('key');
会话
本节讨论了Laravel的会话配置文件 config/session.php
。
如果您使用memcached会话,您将已将driver
配置项设置为'memcached'。
如果您已添加上述讨论的B3IT\MemcachedPlus\SessionServiceProvider
,则store
配置项可用。以下是一个新片段,您可以将其粘贴到会话配置文件中,以了解其使用方法
/*
|--------------------------------------------------------------------------
| Session Cache Store
|--------------------------------------------------------------------------
|
| When using the "apc" or "memcached" session drivers, you may specify a
| cache store that should be used for these sessions. This value must
| correspond with one of the application's configured cache stores.
|
*/
'store' => null,
要使用前面的memcached 'plus'存储示例与会话一起使用,您可以按以下方式设置
'store' => 'memcachedstorefoo',
3和4之间的破坏性更改
Memcached选项的配置已更新,以使用Memcached常量而不是字符串常量名称。
session.memcached_store
变量已被重命名为session.store
。
laravel-memcached-plus实战
我创建了一个演示应用,您可以通过它查看此包如何与Laravel 5集成以及如何在Heroku上运行它。
支持
如果您有任何评论或疑问,请告诉我。
谢谢!