Я запускаю PHP-приложение на Azure и испытываю странное поведение: этот фрагмент кода запускается командой консоли:
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
работать отлично.
Тем не менее, призыв к wincache_ucache_set
в Illuminate\Cache\WinCacheStore
возвращается false
,
Как есть настройка wincache.enablecli
во время выполнения PHP, чтобы контролировать 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'));
}
Других решений пока нет …