MS Azure上的Laravel + Wincache:不存储值

时间:2016-02-10 15:13:20

标签: php laravel azure wincache

我在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 usercache:wincache.ucenabled On

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

在一个孤立的php文件中wincache_ucache_setwincache_ucache_get完美地工作。

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

1 个答案:

答案 0 :(得分:2)

因为php运行时中有一个设置wincache.enablecli来控制是否在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'));

    }