Lors de l'interrogation de données paginées thinkphp, si le cache est défini et que la deuxième page ne peut pas être lue, comment puis-je la casser ?
怪我咯
怪我咯 2017-05-16 13:04:24
0
5
529

Lors de la requête de données de pagination thinkphp, si le cache est défini, seule la première page sera affichée. Comment le casser ?
C'est-à-dire 12 >> Cet effet apparaît, mais lorsque vous cliquez sur 2, le contenu de la page 1 est toujours affiché.

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

S($get_code.'visitdata',null); //Si le cache n'est pas vidé au préalable, seule la page 1 sera affichée...
// Effectuer une requête de données de pagination. Si le cache est défini ici, seule la page 1 sera affichée.
M('visitdata')->cache($get_code.'visitdata',60)->where(array('works_code'=>$get_code))->order('visit_id')->limite ($Page->firstRow.','.$Page->listRows)->select();
$cache_visitdata=S($get_code.'visitdata');

$this->assign(array(
    'code'=>$get_code,
    'visitdata'=>$cache_visitdata
));
$this->assign('page',$show);
$this->display();

12 >> Cet effet apparaît, mais lorsque vous cliquez sur 2, le contenu de la page 1 est toujours affiché.
Comment le casser ?

怪我咯
怪我咯

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

répondre à tous(5)
我想大声告诉你

C'est le tp3.2. Je ne l'ai pas utilisé depuis longtemps et j'ai oublié comment l'utiliser. Le questionneur peut faire ceci :

  • Obtenir le numéro de page

  • Vérifiez si le cache correspondant au numéro de page existe (la clé du cache peut s'écrire ainsi : 'content_page_' . $page)

  • Retour si le cache existe

  • Si le cache n'existe pas, exécutez la requête de base de données et mettez en cache une copie la prochaine fois que la demande arrivera, elle sera directement mise en cache

  • .

Je pense que le principal problème réside dans la valeur de la clé mise en cache.

给我你的怀抱

clé et marque de pagination

phpcn_u1582

Instruction SQL de sortie pour le débogage, voyez d'abord ce que SQL exécute, puis trouvez le problème

phpcn_u1582

Ce que vous avez ici : ->cache($get_code.'visitdata',60)
$get_code.'visitdata' est le même dans le cas de la pagination, il ne sera donc pas mis à jour.
Vous devriez pouvoir inclure le numéro de page dans cette clé.

刘奇
$p = intval($_GET['p']);
M('visitdata')->cache($get_code.'visitdata'.$p,60)->where(array('works_code'=>$get_code))->order('visit_id')->limit($Page->firstRow.','.$Page->listRows)->select();
$cache_visitdata=S($get_code.'visitdata');

//把页码加上。
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal