2

我在 azure 上运行 PHP 应用程序并遇到一些奇怪的行为:此代码段在控制台命令中运行:

public function fire(Illuminate\Contracts\Cache\Repository $cache) {
    $cache->forever('someKey', 'someValue');

    var_dump($cache->get('someKey'));
}

输出是:

NULL

执行命令后通过 wincache_ucache_get 访问值也会返回 NULL(带前缀和不带前缀)。有人对此有所了解吗?


PS:根据 phpinfo() wincache 用户缓存已启用: wincache.ucenabled On


经过更多调试后,我知道了更多事实:

在一个隔离的 php 文件中wincache_ucache_set并且wincache_ucache_get可以完美地工作。

wincache_ucache_set但是,对in的调用Illuminate\Cache\WinCacheStore返回false

4

1 回答 1

2

由于 php runtime 中有一个设置wincache.enablecli来控制是否wincache在 CLI 模式下启用。

默认情况下,它设置为 0,因此该功能wincache_ucache_set()无法在工匠命令中工作。

您可以参考 Azure 官方关于更改 PHP_INI_SYSTEM 配置设置的指南,设置

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'));

    }
于 2016-02-11T08:41:11.537 回答