2016-08-17 2 views
0

ここにシナリオがあります。私は良い、簡単な英語でそれを説明することはできませんので、それは言ってようなものです:Laravel:クエリの試行時間を制限する方法、またはクエリを30秒以内に制限する方法

「ねえ、あなただけのバック照会する30秒待ってください を当面の場合は、キャッシュされたデータを使用して、しばらく前にクエリを要求します。 "

は、私はあなたがそのページを開いた場合には、コントローラから何かを照会し、「application.blade.php」ビューを持っている

SELECT * FROM application WHERE user_id = 3 

または

$data = Application::findOrFail(3); 
    return view('application', $data); ` 

ユーザーが開きますので、場合

そのページ/ビューには、いくつかのデータが表示されます。私の場合、ユーザーがそのページをリフレッシュ/オープンすると、複数のクエリ結果にデータベースがトリガーされます。それは交通などを引き起こす可能性があります。

質問このような状況を防止する方法。またはどのように

if (query_time < 30 sec) 
{ 
    display_view_using_cache; 
} 

このアルゴリズムのように限り、私のボスの懸念として、彼はデータベースをクエリ要求でoverfloodedしたくないので、これは、実装されるべきである理由をコーディングします。

答えて

0

この

$value = Cache::remember('users', 60, function() 
{ 
    return Application::findOrFail(3); 
}); 
+0

おかげで、キャッシュを使用するための私の最初の時間を試してみてください。 –

0

キャッシュ層(Redis/Memcache/MongoDB)を追加するだけです。または、ワニスのようなプロキシを逆にします。そのようなコードでチェックする必要はありません。

そして、キャッシュ層のコードは、そのように見ることができます:あなたはどのくらいのデータが格納されるべき特定のために構成することができますキャッシュ層で

if ($cache->has($key)) { 
    $response = $cache->fetch($key); 
} else { 
    $reponse = $db->fetch('whatever'); 
} 

そしてもちろんを。

もちろん、ワニスを使用する場合はコードが少なく、ワニス構成レイヤーになります。しかし、私はリバースプロキシを提案しません。レディスは十分です。

関連する問題