diff --git a/application/controllers/keyworlds.php b/application/controllers/keyworlds.php index 1adf548b..1c6706db 100644 --- a/application/controllers/keyworlds.php +++ b/application/controllers/keyworlds.php @@ -16,7 +16,7 @@ class Keyworlds extends CI_Controller { public function index($kw_is_id = '') { $this->load->library('Accesscheck'); - $this->accesscheck->check_access(); // test-- + $this->accesscheck->check_access(); $this->permission->is_admin(); //查询结构列表信息 @@ -263,7 +263,6 @@ class Keyworlds extends CI_Controller { 'vac' => 'get_search_content_by_google', 'it' => 'get_search_content_by_google', 'ru' => 'get_search_content_by_google', - 'wt' => 'get_search_content_by_baidu', 'tbt' => 'get_search_content_by_google', 'sht' => 'get_search_content_by_google', 'yz' => 'get_search_content_by_google', @@ -272,48 +271,59 @@ class Keyworlds extends CI_Controller { 'ct' => 'get_search_content_by_google', 'mct' => 'get_search_content_by_google', 'dct' => 'get_search_content_by_google', - 'cits' => 'get_search_content_by_baidu', 'ah' => 'get_search_content_by_google' ); $site_code = $this->config->item('site_code'); $method = $engines[$site_code]; - if ($site_code == 'wt') - $site_url = 'www.iiiyooo.com'; - if ($site_code == 'cits') - $site_url = 'www.guilincits.c'; - - $last_rank = $this->Keywordsrank_model->get_rank_list($kw_id, $top = 1); - if (isset($last_rank[0]->kwr_datetime) and ( time() - $last_rank[0]->kwr_datetime) < 300) { + $today = strtotime(date('Y-m-d')); + $client_flag = 'PC'; + $rank_flag = 'rank'; + $source_flag = 'source'; + $last_rank = $this->Keywordsrank_model->get_rank_list($kw_id, $top = 1); + if (isset($last_rank[0]->kwr_datetime) and ( time() - $last_rank[0]->kwr_datetime) < 180) { $data[] = array('name' => 'rank', 'value' => '查询过于频繁,请等待三分钟!'); echo json_encode($data); return TRUE; + } else if (empty($last_rank[0]->kwr_mobile_rank) && + intval($last_rank[0]->kwr_datetime) > intval($today)) { + $client_flag = 'm'; + $rank_flag = 'rank_m'; + $source_flag = 'source_m'; } //获取排名详细情况,排名超过150的停止搜索 for ($i = 1; $i <= 15; $i++) { $j = $i; - $rank = $this->$method($keyworlds, $site_url, $j, $site_code); - if ($rank['rank'] != 0) { - if ($rank['rank'] > 150) - $rank['rank'] = '151'; + $rank = $this->$method($client_flag, $keyworlds, $site_url, $j, $site_code); + // 仅更新一个字段 + if (intval($rank['rank']) == 0) { + $rank['rank'] = $last_rank[0]->kwr_rank; + $rank['source'] = $last_rank[0]->kwr_source; + } else { + $rank['rank_m'] = null; + $rank['source_m'] = null; + } + if ($rank[$rank_flag] != 0) { + if ($rank[$rank_flag] > 150) + $rank[$rank_flag] = '151'; break; }elseif ($i == 15) { - $rank['rank'] = '151'; + $rank[$rank_flag] = '151'; break; - } elseif ($rank['rank'] == -2) { + } elseif ($rank[$rank_flag] == -2) { break; } } //保存排名数据 - if ($rank['rank'] == '151') { //超过151的排名则不记录 + if ($rank[$rank_flag] == '151') { //超过151的排名则不记录 $this->Keywords_model->update_time($kw_id); } elseif (isset($last_rank[0]->kwr_datetime) and $last_rank[0]->kwr_datetime > strtotime(date('Y-m-d'))) { - if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->update_rank($last_rank[0]->kwr_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'])) { + if ($rank[$rank_flag] != -1 and $rank[$rank_flag] != -2 and $this->Keywordsrank_model->update_rank($last_rank[0]->kwr_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'])) { $this->Keywords_model->update_time($kw_id); } } else { - if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { + if ($rank[$rank_flag] != -1 and $rank[$rank_flag] != -2 and $this->Keywordsrank_model->add_rank($kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { $this->Keywords_model->update_time($kw_id); } } @@ -324,17 +334,26 @@ class Keyworlds extends CI_Controller { //自动爬取排名 public function get_auto_rank($engines = '', $fix_site_code = '') { + set_time_limit(60); $rank = array(); $site_config = $this->config->item('site'); $engines = trim($engines); //取出需要更新排名的关键词 $worldsList = $this->Keywords_model->get_keyworld_list(1, $engines, $fix_site_code); - //print_r($worldsList);die(); //如果没有需要更新的则返回 if (empty($worldsList)) { echo 'all done'; return; } + $today = strtotime(date('Y-m-d')); + $client_flag = "PC"; + $rank_flag = 'rank'; + $source_flag = 'source'; + if (intval($worldsList[0]->kwr_datetime) >= intval($today) ) { + $client_flag = "m"; + $rank_flag = 'rank_m'; + $source_flag = 'source_m'; + } $last_rank = $this->Keywordsrank_model->get_rank_list($worldsList[0]->kw_id); //获取排名并保存 @@ -345,24 +364,30 @@ class Keyworlds extends CI_Controller { for ($i = 1; $i <= 15; $i++) { if ($engines == '' || $engines == 'en' || $engines == 'eu') {//没有输入搜索引擎的时候根据站点自动分配获取排名的搜索引擎 - $rank = $this->get_search_content_by_google($v->kw_keyworlds, $site_url, $i, $site_code); + $rank = $this->get_search_content_by_google($client_flag,$v->kw_keyworlds, $site_url, $i, $site_code); } else if ($engines == 'yandex') {//俄语站的yangdex - $rank = $this->get_search_content_by_yandex($v->kw_keyworlds, $site_url, $i - 1); + $rank = $this->get_search_content_by_yandex($client_flag,$v->kw_keyworlds, $site_url, $i - 1); } - - if ($rank['rank'] != 0) { - if ($rank['rank'] > 150) - $rank['rank'] = '151'; + if (intval($rank['rank']) == 0) { + $rank['rank'] = $last_rank[0]->kwr_rank; + $rank['source'] = $last_rank[0]->kwr_source; + } else { + $rank['rank_m'] = null; + $rank['source_m'] = null; + } + if ($rank[$rank_flag] != 0) { + if ($rank[$rank_flag] > 150) + $rank[$rank_flag] = '151'; break; }elseif ($i == 15) { - $rank['rank'] = '151'; - } elseif ($rank['rank'] == -2) { + $rank[$rank_flag] = '151'; + } elseif ($rank[$rank_flag] == -2) { break; } } - if ($rank['rank'] == '151') { //超过151的排名则不记录 + if ($rank[$rank_flag] == '151') { //超过151的排名则不记录 $this->Keywords_model->update_time($v->kw_id); - }else if ($rank['rank'] != -1 and $rank['rank'] != -2 and $this->Keywordsrank_model->add_rank($v->kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { + }else if ($rank[$rank_flag] != -1 and $rank[$rank_flag] != -2 and $this->Keywordsrank_model->add_rank($v->kw_id, $rank['rank'], $rank['rank_m'], $rank['source'], $rank['source_m'], $rank['engines'])) { $this->load->model('InfoSMS_model'); $last_rank = isset($last_rank[0]) ? $last_rank[0]->kwr_rank : $rank['rank']; $this->InfoSMS_model->readed_for_info($v->kw_id, 'keywords_rank'); @@ -375,7 +400,8 @@ class Keyworlds extends CI_Controller { } //计算关键词在google搜索引擎的排名 - public function get_search_content_by_google($keyworlds, $site_url, $page, $site_code) { + public function get_search_content_by_google($client_flag,$keyworlds, $site_url, $page, $site_code) { + $site_url .= "/"; $rank['rank'] = 0; $rank['source'] = $site_url; $rank['rank_m'] = 0; @@ -410,23 +436,31 @@ class Keyworlds extends CI_Controller { //抓取google搜索结果 $url = "https://www.$google_url/search?q=$search_worlds&start=$start&num=50&hl=$language"; - $response = $this->curl($url); + $match_fun = '/