我運行在Azure上一個PHP應用程序,我遇到一些奇怪的行爲:在一個控制檯命令這個片段runns:Laravel + WINCACHE在MS天青:不存儲值
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()'報告'wincache.enablecli On On'。現在,'wincache_ucache_set'在工匠命令中返回'true'; CGI腳本中的'wincache_ucache_get'不會返回正確的值。 CGI和CLI可能有單獨的商店嗎? – marstato
似乎'wincache'會爲不同的用戶創建不同的'user cache'實例。這裏cli中的artisan命令和cgi中的http請求是不同的用戶。而且他們無法分享他們的用戶緩存。也許我們需要一些其他緩存類型。像「文件,數組」,它將利用相同的本地文件來緩存值,或「'redis」,它可以將值分享給不同的用戶。 –
我可以證實@ GaryLiu-MSFT是正確的; WinCache爲由CLI執行的進程與通過fastcgi啓動的進程創建單獨的緩存。來源:我是WinCache的當前所有者。 – DropPhone