thinkphp 페이지 매김 데이터를 쿼리할 때 캐시가 설정되어 있고 두 번째 페이지를 읽을 수 없다면 어떻게 깨뜨릴 수 있나요?
怪我咯
怪我咯 2017-05-16 13:04:24
0
5
521

thinkphp 페이징 데이터 쿼리 시 캐시가 설정되어 있으면 첫 번째 페이지만 표시됩니다. 어떻게 깨나요?
즉, 12>> 이런 효과가 나오는데 2를 클릭하면 1페이지의 내용이 계속 표시됩니다.

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

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->할당(배열(
    '코드'=>$get_code,
    '방문데이터'=>$cache_visitdata
)));
$this->할당('페이지',$show);
$this->display();

12 >> 이런 효과가 나오는데 2를 클릭하면 1페이지의 내용이 계속 표시됩니다.
어떻게 깨뜨릴 수 있나요?

怪我咯
怪我咯

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

모든 응답(5)
我想大声告诉你

이것은 TP3.2입니다. 오랫동안 사용하지 않아서 어떻게 사용하는지 잊어버렸습니다. 질문자는 다음과 같이 할 수 있습니다.

  • 페이지 번호 가져오기

  • 페이지 번호에 해당하는 캐시가 있는지 확인하세요. (캐시 키는 다음과 같이 쓸 수 있습니다:

    )'content_page_' . $page

  • 캐시가 있으면 반환

  • 캐시가 없으면 데이터베이스 쿼리를 실행하고 다음에 요청이 들어오면 바로 캐시됩니다

가장 큰 문제는 캐시된 키 값에 있다고 생각합니다.

给我你的怀抱

키와 페이징 표시

phpcn_u1582

디버깅을 위한 sql문을 출력하고, 먼저 어떤 sql이 실행되고 있는지 확인한 후 문제를 찾아보세요

phpcn_u1582

여기에 있는 내용: ->cache($get_code.'visitdata',60)
$get_code.'visitdata'는 페이징의 경우에도 동일하므로 업데이트되지 않습니다.
이 키에 페이지 번호를 포함할 수 있어야 합니다.

刘奇

으아악

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿