我正在 azure 上运行 PHP 应用程序,并且遇到一些奇怪的行为:此代码片段在控制台命令中运行:
public function fire(Illuminate\Contracts\Cache\Repository $cache) {
$cache->forever('someKey', 'someValue');
var_dump($cache->get('someKey'));
}
输出为:
NULL
执行命令后通过wincache_ucache_get访问值也会返回NULL(带前缀和不带前缀)。有人对此有线索吗?
P.S.:根据 phpinfo(),wincache 用户缓存已启用:wincache.ucenabled On
经过更多调试后,我知道了更多事实:
在独立的 php 文件中,wincache_ucache_set
和 wincache_ucache_get
完美工作。
但是,对 Illuminate\Cache\WinCacheStore
中的 wincache_ucache_set
的调用返回 false
。
最佳答案
因为有一个设置wincache.enablecli
在 php 运行时控制 CLI 模式下是否启用 wincache
。
默认情况下,它设置为 0,因此函数 wincache_ucache_set()
无法在 artisan 命令中工作。
您可以引用Azure官方关于Changing PHP_INI_SYSTEM configuration settings的指南,设置
wincache.enablecli=1
在附加的 php 配置设置中。
那么下面的代码片段应该可以正常工作:
public function fire()
{
wincache_ucache_set('foo','goo',0);
var_dump(wincache_ucache_get('foo'));
}
或类似:
use Cache;
public function fire()
{
Cache::forever('someKey', 'someValue');
var_dump(Cache::get('someKey'));
}
关于php - MS Azure 上的 Laravel + Wincache : Not storing values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35318872/