isExists($cache_url,$timeout)){ $read_cache = $cache->get($cache_url); $cache_type = $read_cache['cache_type']; if($cache_type == 1){ $kid = $read_cache['kid']; $file_path = $read_cache['file_path']; $kqmb = file_get_contents($file_path); } } if(strlen($kqmb)<100){ $kid = get_kid($url,$product_biaoshi); if($kid<=0 || $kid>$total_keyword){ $kid = mt_rand(1, min($total_keyword, 469)); } $htmlpagepath = (int)($kid / $dir_number); $directory = './htmlpage/'.$htmlpagepath.'/'.$kid ; $randomHtmlFile = getRandomHtmlFile($directory); $file_number = $randomHtmlFile['total_files']; if($file_number >= $spider_html_number){ $file_path = $randomHtmlFile['random_file']; $kqmb = file_get_contents($file_path); if(strlen($kqmb)>=100){ $recache_flag = 1; } } } else{ $recache_flag = 0; } if(strlen($kqmb)<100){ $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->select($redisNumber); if ($redis->exists($kid)) { $result_redis = json_decode($redis->get($kid), true); $keyword = $result_redis['keyword']; } else{ $mysql_pool = MysqliPool::get_Instance($DBserver, $user, $password, $DBname); $mysqli = $mysql_pool->get_connection(); $sql = "select * from keyword where kid = $kid "; $result = $mysqli->query($sql); $keyword_item = $result->fetch_assoc(); $keyword = $keyword_item['keyword']; $result->close(); $mysql_pool->release_connection($mysqli); if($kid>0 && $kid<=$total_keyword){ $redis->set($kid, json_encode($keyword_item)); } } $redis->close(); $search = array( 'kid' => $kid, 'keyword' => $keyword ); $json_search = json_encode($search); header("HTTP/1.1 400 nocache"); echo $json_search; exit; } else{ if($oulink_flag == 1){ $foot = file_get_contents("foot.txt"); $kqmb = preg_replace('/<\/body>.*?<\/html>/si', $foot.'', $kqmb); $outlink_number = biaoqianCount("{mb_keyword}", $kqmb); $keywordsArr = rand_unique(1,$total_keyword,$outlink_number); $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->select($redisNumber); $keywords = []; $sql_keywords = []; foreach ($keywordsArr as $pid) { if ($redis->exists($pid)) { $keywords[] = json_decode($redis->get($pid), true); }else{ $sql_keywords[] = $pid; } } $mysql_pool = MysqliPool::get_Instance($DBserver, $user, $password, $DBname); $mysqli = $mysql_pool->get_connection(); if(!empty($sql_keywords)){ $orderedPids = implode(',', $sql_keywords); $placeholders = str_repeat('?,', count($sql_keywords) - 1) . '?'; $sql = "select * from keyword where kid in ($placeholders) ORDER BY FIELD(kid, $orderedPids)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param(str_repeat('i', count($sql_keywords)), ...$sql_keywords); $stmt->execute(); $result = $stmt->get_result(); while ($row = $result->fetch_assoc()){ $keywords[] = $row; if($row['kid']>0 && $row['kid']<=$total_keyword){ $redis->set($row['kid'], json_encode($row)); } } $result->close(); $stmt->close(); } $redis->close(); $kqmb = generate_page($kqmb,$keywords); } else{ $keywords = []; $kqmb = generate_page($kqmb,$keywords); } header("HTTP/1.1 200 OK"); echo $kqmb; if($recache_flag == 1 && strlen($file_path)>5){ if($cache->isExists($cache_url,$timeout)){ $cache->del($cache_url); } $save_cache = array( 'cache_type' => 1, 'kid' => $kid, 'file_path' => $file_path ); $cache->set($cache_url, $save_cache); } } ?>