你现在的位置:首页 > PHP网站建设知识库 > phpcms > 正文

phpcms V9 站群搜索的bug解决方法

最近一直在把站点改成了站群,却发现搜索竟然无效了

分析了N个文件才发现原来在没有分站的时候内容发布保存在到V9_search表的typeid对应的是1但是一旦分站点了保存的全部为0。从内容模型研究添加开始查看终于给我发现了,看下缓存文件大家就明白了:

模型下查找model下class类为content_model.class.php
private function search_api($id = 0, $data = array(), $action = 'update') {
$type_arr = getcache('type_model','search');
$typeid = $type_arr[$this->modelid];
if($action == 'update') {
$fulltext_array = getcache('model_field_'.$this->modelid,'model');
foreach($fulltext_array AS $key=>$value){
if($value['isfulltext']) {
$fulltextcontent .= $data['system'][$key] ? $data['system'][$key] : $data['model'][$key];
}
}
$this->search_db->update_search($typeid ,$id, $fulltextcontent,addslashes($data['system']['title']).' '.addslashes($data['system']['keywords']),$data['system']['inputtime']);
} elseif($action == 'delete') {
$this->search_db->delete_search($typeid ,$id);
}
}


会发现
$type_arr = getcache('type_model','search');
$typeid = $type_arr[$this->modelid];

仔细观察这句原来是单站点才可以用,站群就无法使用
因为typeid无法获取,自然默认就是0

解决方法:

$type_arr = getcache('search_model_'.$this->siteid,'search');
$typeid = $type_arr[$this->modelid]['typeid'];