/** * 通过访问的文章uv推文章 * @params int $num 从多少条数据中随机取数据。例如从100条数据中随机取数据。 * @parmas int $getNum 返回的数据条数的数量,例如需要补充21条数据,此时传21 就好了 * @params array $unDocArr 查询数据,需要排除进行的文章id集合,一维数组。 * @params boolean $is_miss 用于标记是否是真正需要推的数据,true表示错过,不是真正要推的 */ function get_data_by_hot_v3($num = 100, $getNum = 36, $unDocArr = array(), $is_miss = true) { global $db_guess; # 对一部分排重 if ($unDocArr) { $unStr = implode(',', $unDocArr); $whereStr = 'where docId not in(' . $unStr . ') '; } else { $whereStr = ''; } $sql = 'SELECT docId,uv from article_monitor_v2 ' . $whereStr . ' ORDER BY uv desc limit ' . $num; $result2 = $db_guess->get_results($sql); # 在100个单元中随机取出36个单元,并按uv排倒序 if ($result2) { # 将可能存在的字串类型转成int型 $result2_1 = array(); foreach ($result2 as $key => $value) { $value1 = array(); $value1['docId'] = (int) $value['docId']; $value1['uv'] = (int) $value['uv']; $result2_1[$key] = $value1; } $result2 = $result2_1; $res1 = array_rand($result2, $getNum); if ($res1) { $newArray1 = array(); foreach ($res1 as $key => $value) { $newArray1[] = $result2[$value]; } $newArray2 = array(); foreach ($newArray1 as $key => $value) { $newArray2[$value['docId']] = $value['uv']; } arsort($newArray2); # 根据docId获取文章的title,short_title,pic_src # 重组一个去获取文章信息的docId集合 $docArr = array_keys($newArray2); $dataArr = get_data_by_docid($docArr); # 如果标记了不是命中推送的话,就加上url参数标记 if ($is_miss) { foreach ($dataArr as $key => $value) { $dataArr[$key]['url'] .= '&vlike=6'; } } # 将含有文章信息的数据用其docId作为键 $newArray3 = array(); foreach ($dataArr as $key => $value) { $newArray3[$value['document_id']] = $value; } //var_dump($newArray3);exit('680_1'); # 获取之后,按照uv倒序的顺序返回 $newArray4 = array(); foreach ($newArray2 as $key => $value) { $newArray4[$key] = $newArray3[$key]; } } } else { $newArray4 = array(); } return $newArray4; }
/** * 通过访问的文章uv推文章 * @params int $num 从多少条数据中随机取数据。例如从100条数据中随机取数据。 * @parmas int $getNum 返回的数据条数的数量,例如需要补充21条数据,此时传21 就好了 * @params array $unDocArr 查询数据,需要排除进行的文章id集合,一维数组。 * @params boolean $is_miss 用于标记是否是真正需要推的数据,true表示错过,不是真正要推的 */ function get_data_by_hot_v3($num = 200, $getNum = 36, $unDocArr = array(), $is_miss = true) { global $db_doc_read, $doc_id, $dataNum; # 对一部分排重 if ($unDocArr) { $unStr = implode(',', $unDocArr); $whereStr = ' where docId not in(' . $unStr . ') '; } else { $whereStr = ' where 1 AND docId<>' . $doc_id . ' '; } // $sql = 'SELECT docId,uv from article_monitor_v2 '.$whereStr.' ORDER BY uv desc limit '.$num; $sql = 'SELECT docId,uv from article_monitor_v2 ORDER BY uv desc limit ' . $num; // $result2 = $db_doc_read->get_results($sql); /** * @desc START 杨叔说搞一个缓存 add by 任新强 2015-12-30 12:05:21 */ $mongokey22 = 'zol:cms:get:data:hot:v3:mongo:by:ryb'; $mongoDate22 = ZOL_Api::run("Kv.MongoCenter.get", array('module' => 'cms', 'key' => $mongokey22)); if (!$mongoDate22) { $result2 = $db_doc_read->get_results($sql); ZOL_Api::run("Kv.MongoCenter.set", array('module' => 'cms', 'key' => $mongokey22, 'data' => $result2, 'life' => 60 * 60 * 4)); } else { $result2 = $mongoDate22; } if ($unDocArr) { $i = 0; $results = array(); foreach ($result2 as $v) { if ($i > 99) { break; } if (in_array($v['docId'], $unDocArr)) { continue; } array_push($results, $v); $i++; } } /** * @desc END */ # 在100个单元中随机取出36个单元,并按uv排倒序 if ($results || $result2) { $results = $results ? $results : $result2; # 将可能存在的字串类型转成int型 $result2_1 = array(); foreach ($results as $key => $value) { $value1 = array(); $value1['docId'] = (int) $value['docId']; $value1['uv'] = (int) $value['uv']; $result2_1[$key] = $value1; } $results = $result2_1; $res1 = array_rand($results, $getNum); if (!is_array($res1)) { $res1 = array($res1); } if ($res1) { $newArray1 = array(); foreach ($res1 as $key => $value) { $newArray1[] = $results[$value]; } $newArray2 = array(); foreach ($newArray1 as $key => $value) { $newArray2[$value['docId']] = $value['uv']; } arsort($newArray2); # 根据docId获取文章的title,short_title,pic_src # 重组一个去获取文章信息的docId集合 $docArr = array_keys($newArray2); $dataArr = get_data_by_docid($docArr); # 如果标记了不是命中推送的话,就加上url参数标记 // $is_miss 文章页的“猜你喜欢”不用添加vlike=miss参数 change 20150804 if ($is_miss) { foreach ($dataArr as $key => $value) { $dataArr[$key]['url'] .= '?vlike=miss&from=article_guess'; } } # 将含有文章信息的数据用其docId作为键 $newArray3 = array(); foreach ($dataArr as $key => $value) { $newArray3[$value['document_id']] = $value; } //var_dump($result2);exit('634_1'); # 获取之后,按照uv倒序的顺序返回 $newArray4 = array(); foreach ($newArray2 as $key => $value) { $newArray4[$key] = $newArray3[$key]; } } } else { $newArray4 = array(); } return $newArray4; }