2016-06-21 18 views
0

指定されたサーバのステータスをチェックしてこのステータスをキャッシュに入れるミドルウェアを作成しようとしていますが、キャッシュがミドルウェアで正しく動作していないため、キーの存在などを確認しようとしています。Laravel Middlewareキャッシュが正しく動作しない

$ this-> checkServerStatus()はtrue/falseを返します。

キャッシュキーの存在をチェックしようとすると、Cache :: has( "KEY")またはCache :: get( "KEY")の場合は常にfalseになります。

どういうところが間違っていますか?ミドルウェアでキャッシュを使用することはできませんか?

答えて

0

Cache :: hasメソッドの動作は、使用している実際のバックエンドに大きく依存します。

はこれをやってみてください。

public function handle($request, Closure $next) 
{ 
    $response = $next($request); 

    if(Cache::has(Config::get('ots.server_status_cache_name'))) { 
     return $response; // Exit method as soon as you can 
    } 

    $serverStatus = $this->checkServerStatus() ? 'up' : 'down'; 
    Cache::put(Config::get('ots.server_status_cache_name'), $serverStatus, Config::get('ots.server_status_cache_time')); 

    return $response; 
} 

あなたはキャッシュのbooleanが、文字列を格納しないというように。たぶん、これは解決策ではありませんが、正しい方向に向けるでしょう。

使用しているキャッシュエンジンによっては、デバッグモードで起動して、実行中の接続とトランザクションを確認できます。たとえば、memcachedを-vvで起動して取得と設定を表示したり、Redisインスタンスに接続したり、MONITORを実行してアプリケーションの動作を確認したりできます。これはあなたが問題を見つけるのを助けるかもしれません。

+0

返信いただきありがとうございますが、キャッシュドライバをアレイからredisに変更することで問題は解決しました。私はいくつかのデバッグ目的のために最初のものを選択したことを覚えていません:) – Tesly