thinkphp のページ分割されたデータをクエリするときに、キャッシュが設定されていて 2 ページ目が読み取れない場合、どうすればキャッシュを解除できますか?
怪我咯
怪我咯 2017-05-16 13:04:24
0
5
550

thinkphp でページ分割されたデータをクエリする場合、キャッシュが設定されている場合、最初のページのみが表示されます。これを解除するにはどうすればよいですか?
つまり、12>> この効果が出ますが、2をクリックすると1ページ目の内容が表示されたままになります。

$count=M('visitdata')->where(array('works_code'=>$get_code))->count();
$Page=new \Think\Page($count,10);
$show=$Page->show();

S($get_code.'visitdata',null); //最初にキャッシュをクリアしないと、ページ 1 のみが表示されます...
// ページング データのクエリを実行します。ここでキャッシュが設定されている場合、ページ 1 のみが表示されます。
M('visitdata')->cache($get_code.'visitdata',60)->where(array('works_code'=>$get_code))->order('visit_id')->limit ($Page->firstRow.','.$Page->listRows)->select();
$cache_visitdata=S($get_code.'visitdata');

$this->assign(array(
    'コード'=>$get_code,
    'visitdata'=>$cache_visitdata
));
$this->assign('ページ',$show);
$this->display();

12 >> このような効果が出ますが、2をクリックすると1ページ目の内容が表示されたままになります。
どうやって壊すの?

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(5)
我想大声告诉你

これは tp3.2 ですが、長い間使用していなかったので、質問者は次のことを行うことができます。

  • ページ番号を取得

  • ページ番号に対応するキャッシュが存在するかどうかを確認します(キャッシュキーは次のように記述できます:

    )'content_page_' . $page

  • キャッシュが存在する場合に返す

  • キャッシュが存在しない場合は、データベースクエリを実行してコピーをキャッシュし、次回リクエストが届いたときに直接キャッシュされます

主な問題はキャッシュされたキーの値にあると思います。

いいねを押す +0
给我你的怀抱

sキーとページングマーク

いいねを押す +0
phpcn_u1582

デバッグ用に SQL ステートメントを出力し、まず SQL が実行している内容を確認してから、問題を見つけます

いいねを押す +0
phpcn_u1582

ここにあるもの: ->cache($get_code.'visitdata',60)
$get_code.'visitdata' はページングの場合と同じであるため、更新されません。
このキーにはページ番号を含めることができるはずです。

いいねを押す +0
刘奇

リーリー

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート