杰奇jieqi 的opf问题,wap端读取opf数据不是最新的

很奇怪的一个错误, 经过简单的核查, 发现出现这种错误的小说占那么一部分.

大致情况是这样
我的小说站数据pc/wap 是共用一个的, pc端一点问题都没有.
而在wap有的小说是没问题的, 有问题的则是打开目录没有问题, 前一部分章节没有问题, 但是后面的章节内容 点之后出现类似PC端404的意思. 给浏览器的显示页面还是当前小说的目录页(没有调出小说内容页), 但是很多数据已经没了, 比如所属类别, 小说名, 最新章节.

仔细检查发现了下面的问题:
1. 出问题的章节, 应该都是类似PC的404页面, 但是却可以调用出部分数据.
2. A小说共100章, 第51章出了问题, 那么在第50章内容页, 点下一章的时候, !!!发现提交的URL是当前小说的目录页.!!!

根据 modules/article/wapreader.php?aid=57549&cid=9345391

查看到 wapreader.php 里面

if(!$package->showChapter($_REQUEST[‘cid’]))
{
echo __LINE__;die();
$package->showIndex();
}

知道应该是  $package->showChapter函数的问题

进而查找 class/wappackage.php 里面
function showChapter($cid)
{
global $jieqiConfigs;
global $jieqi_file_postfix;
$i=0;
$num=count($this->chapters);
while($i<$num){
$tmpvar=$this->getCid($this->chapters[$i][‘href’]);
if($tmpvar==$cid){
$this->makeHtml($i+1, true, true);
return true;
}
$i++;
}
return false;
}

应该是循环后得到了false值,那么为什么呢,说明 $this->chapters 这个值里面没有$_REQUEST[‘cid’]的参数,那么 $this->chapters 从何而来呢,
发现 loadOPF() 函数读取 index.opf ,得到 chapters的数组,里面包含的章节的标题和地址,那么只需要更新这个 index.opf 就能得到最新的数据,那么
$tmpvar=$this->getCid($this->chapters[$i][‘href’]);
就能得到某个章节的值了.
问题解决

mysql 数据库索引问题,杰奇 cms 的jieqi_article_article表

“SELECT * FROM jieqi_article_article WHERE display=0 AND size>0 AND lastvisit>=1343750400 ORDER BY monthvisit DESC LIMIT 0, 30”

上面的sql 需要对jieqi_article_article 增加索引 index_display_monvisit  在 display 和 monthvisit

方法 alter table jieqi_article_article add INDEX index_display_monvisit(`display`,`monthvisit`);

总结,形式如 select * from table where a = N1 and b = N2 order by c  ;

在 a 和 c 做复合索引,可以消除filesort