Я бегу приложения PHP на лазури и я испытываю какое-то странное поведение: Этот фрагмент кода runns в консоли команду:Laravel + Wincache на MS Azure: Не хранящие значения
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 usercache: wincache.ucenabled На
После некоторых более отладки я знаю еще несколько фактов:
в изолированном файле PHP wincache_ucache_set
и wincache_ucache_get
работа совершенно.
Однако звонок в wincache_ucache_set
в Illuminate\Cache\WinCacheStore
возвращается false
.
Спасибо за ваш ответ! Но он не работает для меня: я устанавливаю 'wincache.enablecli = 1',' phpinfo() 'reports' wincache.enablecli On On'. Теперь 'wincache_ucache_set' возвращает' true' в команде artisan; 'wincache_ucache_get' в сценариях CGI не возвращает правильное значение. Возможно ли, что существуют отдельные хранилища для CGI и CLI? – marstato
Кажется, что 'wincache' создаст разные экземпляры пользовательского кэша для разных пользователей. Здесь команды мастеров в cli и http-запросах в cgi - разные пользователи. И они не могут делиться своими кэшами пользователей. Возможно, нам нужны некоторые другие типы кешей. Как «файл, массив», который будет использовать одни и те же локальные файлы для кэширования значений или «redis», которые могут совместно использовать значения для разных пользователей. –
Я могу подтвердить, что @ GaryLiu-MSFT правильно; WinCache создает отдельный кеш для процессов, выполняемых CLI, и процессов, запущенных с помощью fastcgi. Источник: Я являюсь владельцем WinCache. – DropPhone