|
|
<?php
|
|
|
|
|
|
if (!defined('BASEPATH'))
|
|
|
exit('No direct script access allowed');
|
|
|
|
|
|
class Keyworlds extends CI_Controller
|
|
|
{
|
|
|
|
|
|
function __construct()
|
|
|
{
|
|
|
parent::__construct();
|
|
|
$this->permission->is_admin(false);
|
|
|
$this->load->model('InfoKeywords_model','Keywords_model');
|
|
|
$this->load->model('InfoKeywordsrank_model','Keywordsrank_model');
|
|
|
$this->load->model('InfoKeywordsanalytics_model','analytics_model');
|
|
|
$this->load->model('InfoStructures_model');
|
|
|
}
|
|
|
|
|
|
public function index($kw_is_id='')
|
|
|
{
|
|
|
$this->load->library('Accesscheck');
|
|
|
$this->accesscheck->check_access();
|
|
|
|
|
|
$this->permission->is_admin();
|
|
|
//查询结构列表信息
|
|
|
$data['keyworldsList'] = $this->Keywords_model->get_structure_list();
|
|
|
if (empty($data['keyworldsList'])) {
|
|
|
$this->add(0,false);
|
|
|
redirect(site_url("Keyworlds/index"));
|
|
|
}
|
|
|
|
|
|
$root_key=false;
|
|
|
$data['keyworldsList'][0]->id==$kw_is_id?$kw_is_id='':null;
|
|
|
|
|
|
if (empty($kw_is_id) || $kw_is_id=='asc' || $kw_is_id=='desc') {
|
|
|
$root_key=true;
|
|
|
$data['order']=empty($kw_is_id)?'asc':$kw_is_id;
|
|
|
$kw_is_id = $data['keyworldsList'][0]->id;
|
|
|
}
|
|
|
|
|
|
$today=date('Y-m-d',time());
|
|
|
$startdate = strtotime("$today -1 month");
|
|
|
$enddate=time();
|
|
|
if($this->input->post('startdate')!='')$startdate=strtotime($this->input->post('startdate'));
|
|
|
if($this->input->post('enddate')!='')$enddate=strtotime($this->input->post('enddate'));
|
|
|
|
|
|
//查询当前关键词的排名情况
|
|
|
$data['rank_json']='';
|
|
|
$data['current_keyworld'] = $this->Keywords_model->get_keyworld_bytreeid($kw_is_id);
|
|
|
|
|
|
//如果是根目录,则展示最新关键词排名变化情况
|
|
|
if ($root_key) {
|
|
|
$data['compare_rank']=$this->Keywords_model->get_compare_rank($data['order']);
|
|
|
$this->load->view('bootstrap/header',$data);
|
|
|
$this->load->view('keyworlds/compare_rank');
|
|
|
$this->load->view('bootstrap/footer');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
$data['wordcount']=1;
|
|
|
if ($data['current_keyworld']) {
|
|
|
//获取当前节所有直接子节点
|
|
|
$is_id_string=$data['current_keyworld']->kw_id;
|
|
|
$i=0;
|
|
|
foreach ($data['keyworldsList'] as $kw) {
|
|
|
if ($i>9) break;
|
|
|
if($kw->pId==$kw_is_id){
|
|
|
$is_id_string.=','.$kw->kw_id;
|
|
|
$i++;
|
|
|
$data['wordcount']=2;
|
|
|
}
|
|
|
}
|
|
|
$data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string,30,$startdate,$enddate);
|
|
|
empty($data['rank_info']) && $data['rank_info'] = $this->Keywordsrank_model->get_rank_list($is_id_string,30);
|
|
|
if (!empty($data['rank_info'])) {
|
|
|
$rank_info = $data['rank_info'];
|
|
|
asort($rank_info);
|
|
|
$data_time=array();
|
|
|
foreach ($rank_info as $key=>$r) {
|
|
|
if(!in_array(date('Y-m-d',$r->kwr_datetime), $data_time)) $data_time[] = date('Y-m-d',$r->kwr_datetime);
|
|
|
$rank_json[$r->kwr_kw_id][date('Y-m-d',$r->kwr_datetime)]=$r;
|
|
|
$rank_json2[$r->kwr_kw_id][]=$r;
|
|
|
}
|
|
|
|
|
|
foreach ($data_time as $d) {
|
|
|
foreach ($rank_json as $kw_id => &$value) {
|
|
|
if(!isset($pre[$kw_id])) $pre[$kw_id]=$rank_json2[$kw_id][0];
|
|
|
if (!isset($value[$d])) {
|
|
|
$value[$d]=$pre[$kw_id];
|
|
|
}else{
|
|
|
$pre[$kw_id] = $value[$d];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
$data['rank_json'] ='[';
|
|
|
foreach ($rank_json as &$ra) {
|
|
|
ksort($ra);
|
|
|
$data['rank_json'] .='{"name":"'.$ra[$data_time[0]]->kw_keyworlds.'","data":[';
|
|
|
foreach ($ra as $v) {
|
|
|
$kwr_rank = $v->kwr_rank;
|
|
|
if ($v->kwr_rank=='>150') $kwr_rank=100;
|
|
|
if (strtolower($this->config->item('site_code'))=='gm') {
|
|
|
$data['rank_json'] .=-$kwr_rank.',';
|
|
|
}else{
|
|
|
$data['rank_json'] .=$kwr_rank.',';
|
|
|
}
|
|
|
}
|
|
|
$data['rank_json'] = substr($data['rank_json'],0,-1);
|
|
|
$data['rank_json'] .=']},';
|
|
|
}
|
|
|
$data['rank_json']=substr($data['rank_json'],0,-1).']';
|
|
|
$data['data_time'] = json_encode($data_time);
|
|
|
$data['rank_info']='';
|
|
|
isset($rank_json[$data['current_keyworld']->kw_id]) && $data['rank_info']=$rank_json[$data['current_keyworld']->kw_id];
|
|
|
}
|
|
|
}else{
|
|
|
redirect(site_url("Keyworlds/index"));
|
|
|
}
|
|
|
|
|
|
$data['analytics']=$this->analytics_model->get_keyword_analytics($data['current_keyworld']->kw_keyworlds,30);
|
|
|
$data['site_code']=strtolower($this->config->item('site_code'));
|
|
|
|
|
|
$this->load->view('bootstrap/header',$data);
|
|
|
$this->load->view('keyworlds/index');
|
|
|
$this->load->view('bootstrap/footer');
|
|
|
}
|
|
|
|
|
|
//搜索关键词
|
|
|
public function search_keywords(){
|
|
|
$keyworlds=$this->input->post('keyworlds');
|
|
|
if (empty($keyworlds))
|
|
|
{
|
|
|
echo 0;
|
|
|
return;
|
|
|
}
|
|
|
$data['keyworld']=$keyworlds;
|
|
|
$data['keyworld_info']=$this->Keywords_model->get_keyworld_by_word($keyworlds);
|
|
|
$this->load->view('keyworlds/search',$data);
|
|
|
}
|
|
|
|
|
|
//添加关键词
|
|
|
public function add($is_parent_id,$is_ajax=true)
|
|
|
{
|
|
|
$insert_id = $this->InfoStructures_model->Add($is_parent_id);
|
|
|
if ($insert_id && $kw_id=$this->Keywords_model->add_keyworlds('New Keywords',$this->config->item('site_code'),time(),$insert_id)){
|
|
|
$data[] = array('name' => 'ok', 'value' => $this->Keywords_model->get_keyworld($kw_id));
|
|
|
}else{
|
|
|
$data[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error'));
|
|
|
}
|
|
|
if ($is_ajax) {
|
|
|
echo json_encode($data);
|
|
|
return TRUE;
|
|
|
}
|
|
|
return $insert_id;
|
|
|
}
|
|
|
|
|
|
//编辑关键词
|
|
|
public function edit(){
|
|
|
$this->form_validation->set_rules('keyworlds', 'lang:kw_keyworlds', 'required');
|
|
|
$this->form_validation->set_rules('kw_id', 'lang:kw_id', 'required');
|
|
|
if ($this->form_validation->run() == FALSE)
|
|
|
{
|
|
|
$data = array();
|
|
|
foreach ($this->form_validation->_error_array as $key => $value)
|
|
|
{
|
|
|
$data[] = array('name' => $key, 'value' => $value);
|
|
|
}
|
|
|
echo json_encode($data);
|
|
|
}else
|
|
|
{
|
|
|
$isupdate=$this->Keywords_model->edit_keyworlds($this->input->post('keyworlds'),$this->input->post('kw_id'),$this->input->post('status'));
|
|
|
if ($isupdate) {
|
|
|
$data[] = array('name' => 'ok', 'value' => $this->lang->line('form_keyworlds_success'));
|
|
|
echo json_encode($data);
|
|
|
}else{
|
|
|
$data[] = array('name' => 'no', 'value' => $this->lang->line('form_keyworlds_error'));
|
|
|
echo json_encode($data);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//删除某个排名
|
|
|
public function delete_one_rank($kwr_id){
|
|
|
$this->Keywordsrank_model->delete_one_rank($kwr_id);
|
|
|
header("Location:".$_SERVER['HTTP_REFERER']);
|
|
|
}
|
|
|
|
|
|
//删除关键词
|
|
|
public function delete_keyworlds(){
|
|
|
$this->form_validation->set_rules('kw_id', 'lang:kw_id', 'required');
|
|
|
$this->form_validation->set_rules('kw_is_id', 'lang:kw_is_id', 'required');
|
|
|
if ($this->form_validation->run() == FALSE)
|
|
|
{
|
|
|
$data = array();
|
|
|
foreach ($this->form_validation->_error_array as $key => $value)
|
|
|
{
|
|
|
$data[] = array('name' => $key, 'value' => $value);
|
|
|
}
|
|
|
echo json_encode($data);
|
|
|
}else
|
|
|
{
|
|
|
$isdelete=$this->Keywords_model->delete($this->input->post('kw_id'));
|
|
|
if ($isdelete) {
|
|
|
$this->Keywordsrank_model->delete($this->input->post('kw_id'));
|
|
|
$this->InfoStructures_model->Delete($this->input->post('kw_is_id'));
|
|
|
$data[] = array('name' => 'ok', 'value' => site_url('keyworlds/index'));
|
|
|
echo json_encode($data);
|
|
|
}else{
|
|
|
$data[] = array('name' => 'no', 'value' => $this->lang->line('form_keyworlds_error'));
|
|
|
echo json_encode($data);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//移动关键词排序顺序
|
|
|
public function move()
|
|
|
{
|
|
|
//网站会提交一个同级节点id列表字符串,按照这个去排序
|
|
|
$parent_id = $this->input->post('pid');
|
|
|
$idsStr = $this->input->post('ids');
|
|
|
$idsArray = explode(',', $idsStr);
|
|
|
foreach ($idsArray as $key => $value)
|
|
|
{
|
|
|
if ($value)
|
|
|
{
|
|
|
//设置排序
|
|
|
$this->InfoStructures_model->set_sort($value, $key);
|
|
|
//设置path
|
|
|
$this->InfoStructures_model->set_path($parent_id, $value);
|
|
|
}
|
|
|
}
|
|
|
$data[] = array('name' => 'ok', 'value' => $this->lang->line('structures_success_move'));
|
|
|
echo json_encode($data);
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
public function get_google_rank()
|
|
|
{
|
|
|
$keyworlds = $this->input->post('keyworlds'); //搜索关键字
|
|
|
$kw_id = $this->input->post('kw_id');
|
|
|
$site_url = $this->config->item('site_url');
|
|
|
|
|
|
//$engines = array('cht'=>'get_search_content_by_aol','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_yahoo','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_aol','sht'=>'get_search_content_by_aol','yz' =>'get_search_content_by_aol','gl' =>'get_search_content_by_aol','mbj'=>'get_search_content_by_aol','ct' =>'get_search_content_by_aol','mct'=>'get_search_content_by_aol','dct'=>'get_search_content_by_aol','cits' =>'get_search_content_by_baidu',);
|
|
|
//$engines = array('cht'=>'get_search_content_by_google','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_yahoo','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','gl' =>'get_search_content_by_google','mbj'=>'get_search_content_by_google','ct' =>'get_search_content_by_google','mct'=>'get_search_content_by_google','dct'=>'get_search_content_by_google','cits' =>'get_search_content_by_baidu');
|
|
|
$engines = array('cht'=>'get_search_content_by_google','gm' =>'get_search_content_by_google','vc' =>'get_search_content_by_google','jp' =>'get_search_content_by_google','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','gl' =>'get_search_content_by_google','mbj'=>'get_search_content_by_google','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) {
|
|
|
$data[] = array('name' => 'rank', 'value' => '查询过于频繁,请等待三分钟!');
|
|
|
echo json_encode($data);
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
//获取排名详细情况,排名超过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';
|
|
|
break;
|
|
|
}elseif($i==15){
|
|
|
$rank['rank'] = '151';
|
|
|
break;
|
|
|
}elseif ($rank['rank']==-2) {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
//保存排名数据
|
|
|
if ($rank['rank'] == '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['source'])) {
|
|
|
$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['source'],$rank['engines'])) {
|
|
|
$this->Keywords_model->update_time($kw_id);
|
|
|
}
|
|
|
}
|
|
|
$data[] = array('name' => 'rank', 'value' => $rank['rank']);
|
|
|
echo json_encode($data);
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
//自动爬取排名
|
|
|
public function get_auto_rank($engines=''){
|
|
|
$rank = array();
|
|
|
$site_config = $this->config->item('site');
|
|
|
$engines=trim($engines);
|
|
|
//取出需要更新排名的关键词
|
|
|
if ($engines==''){
|
|
|
$worldsList = $this->Keywords_model->get_keyworld_list(1);
|
|
|
}else{
|
|
|
$worldsList = $this->Keywords_model->get_keyworld_list(1,$engines);
|
|
|
}
|
|
|
//如果没有需要更新的则返回
|
|
|
if (empty($worldsList))
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
$last_rank=$this->Keywordsrank_model->get_rank_list($worldsList[0]->kw_id);
|
|
|
|
|
|
//获取排名并保存
|
|
|
foreach ($worldsList as $v)
|
|
|
{
|
|
|
$site_config = $site_config[$v->kw_sitecode];
|
|
|
$site_url = $site_config['site_url'];
|
|
|
$site_code = $site_config['site_code'];
|
|
|
|
|
|
for ($i=1; $i <=15 ; $i++) {
|
|
|
//没有输入搜索引擎的时候根据站点自动分配获取排名的搜索引擎
|
|
|
if($engines=='' || $engines=='en' || $engines=='eu')
|
|
|
{
|
|
|
if (in_array($v->kw_sitecode,array('gm','vc','vac','it','ru','jp'))) {
|
|
|
$rank = $this->get_search_content_by_google($v->kw_keyworlds,$site_url,$i,$site_code);
|
|
|
}
|
|
|
//elseif ($v->kw_sitecode=='jp') {
|
|
|
// $rank = $this->get_search_content_by_yahoo($v->kw_keyworlds,$site_url,$i,$site_code);
|
|
|
//}
|
|
|
/*elseif ($v->kw_sitecode=='ru') {
|
|
|
$rank = $this->get_search_content_by_yandex($v->kw_keyworlds,$site_url,$i-1);
|
|
|
}*/
|
|
|
elseif($v->kw_sitecode=='cits' or $v->kw_sitecode=='wt'){
|
|
|
if($site_code=='wt')$site_url='www.iiiyooo.com';
|
|
|
$rank = $this->get_search_content_by_baidu($v->kw_keyworlds,$site_url,$i);
|
|
|
}else{
|
|
|
//$rank = $this->get_search_content_by_aol($v->kw_keyworlds,$site_url,$i);
|
|
|
$rank = $this->get_search_content_by_google($v->kw_keyworlds,$site_url,$i,$site_code);
|
|
|
}
|
|
|
}
|
|
|
elseif ($engines=='baidu') {
|
|
|
if($site_code=='wt')$site_url='www.iiiyooo.com';
|
|
|
$rank = $this->get_search_content_by_baidu($v->kw_keyworlds,$site_url,$i);
|
|
|
}
|
|
|
//俄语站的yangdex
|
|
|
else if ($engines=='yandex')
|
|
|
{
|
|
|
$rank = $this->get_search_content_by_yandex($v->kw_keyworlds,$site_url,$i-1);
|
|
|
}elseif ($engines=='yahoo') {
|
|
|
$rank = $this->get_search_content_by_yahoo($v->kw_keyworlds,$site_url,$i,$site_code);
|
|
|
}
|
|
|
|
|
|
if ($rank['rank']!=0){
|
|
|
if ($rank['rank']>150) $rank['rank'] = '151';
|
|
|
break;
|
|
|
}elseif($i==15){
|
|
|
$rank['rank'] = '151';
|
|
|
}elseif ($rank['rank']==-2) {
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
//if ($rank['rank'] == '151') {
|
|
|
if (1==2) {
|
|
|
if ($engines!='yandex') $this->Keywords_model->update_time($v->kw_id);
|
|
|
}elseif ($rank['rank']!=-1 and $rank['rank']!=-2 and $this->Keywordsrank_model->add_rank($v->kw_id,$rank['rank'],$rank['source'],$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');
|
|
|
$this->InfoSMS_model->add('keywords_rank',$v->kw_id,$rank['rank'],$last_rank,(string)($rank['rank']-$last_rank));
|
|
|
if ($engines!='yandex') $this->Keywords_model->update_time($v->kw_id);
|
|
|
}
|
|
|
}
|
|
|
var_dump($worldsList[0]->kw_keyworlds,$rank);
|
|
|
}
|
|
|
|
|
|
//计算关键词在aol搜索引擎的排名
|
|
|
public function get_search_content_by_aol($keyworlds,$site_url,$page,$sitecode=false)
|
|
|
{
|
|
|
$rank['rank'] = 0;
|
|
|
$rank['source'] = $site_url;
|
|
|
$rank['engines'] = 'aol';
|
|
|
$startrank=($page-1)*10;
|
|
|
|
|
|
//拼接关键词
|
|
|
$key_array = explode(' ',$keyworlds);
|
|
|
$search_worlds='';
|
|
|
foreach ($key_array as $v) {
|
|
|
$search_worlds.='+'.$v;
|
|
|
}
|
|
|
$search_worlds = substr($search_worlds,1);
|
|
|
|
|
|
//抓取AOL搜索结果
|
|
|
$this->load->library('Snoopy');
|
|
|
$snoopy = $this->snoopy;
|
|
|
$snoopy->maxredirs=0;
|
|
|
$snoopy->agent = '(Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0)';//模拟浏览器
|
|
|
if($snoopy->fetch("http://search.aol.com/aol/search?s_chn=prt_ct8&s_it=comsearch&q=$search_worlds&page=$page&s_it=topsearchbox.search"))
|
|
|
{
|
|
|
|
|
|
$response = $snoopy->results;
|
|
|
|
|
|
//分析AOL搜索结果,计算排名
|
|
|
if (false !== stripos($response,'<title>302 Found</title>')) {
|
|
|
$rank['rank'] = -2;
|
|
|
}
|
|
|
elseif (false !== stripos($response,$site_url))
|
|
|
{
|
|
|
preg_match_all("/class=\"find\"(.*)<\/a>/smUi",$response, $store);
|
|
|
foreach ($store[1] as $k=>$v) {
|
|
|
$start_s=stripos($v,$site_url);
|
|
|
if (false!==$start_s) {
|
|
|
$rank['rank'] = $startrank+$k+1;
|
|
|
$end_s=strpos($v,'" ',$start_s);
|
|
|
$source = substr($v, $start_s, $end_s);
|
|
|
$sources = explode('" ',$source);
|
|
|
$rank['source']=$sources[0];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$rank['rank'] = -1;
|
|
|
}
|
|
|
return $rank;
|
|
|
}
|
|
|
|
|
|
//计算关键词在google搜索引擎的排名
|
|
|
public function get_search_content_by_google($keyworlds,$site_url,$page,$site_code)
|
|
|
{
|
|
|
$rank['rank'] = 0;
|
|
|
$rank['source'] = $site_url;
|
|
|
$rank['engines'] = 'google';
|
|
|
if ($page>3) {
|
|
|
$rank['rank'] = 151;
|
|
|
return $rank;
|
|
|
}
|
|
|
|
|
|
//拼接关键词
|
|
|
/*$key_array = explode(' ',$keyworlds);
|
|
|
$search_worlds='';
|
|
|
foreach ($key_array as $v) {
|
|
|
$search_worlds.='+'.$v;
|
|
|
}
|
|
|
$search_worlds = substr($search_worlds,1);*/
|
|
|
$search_worlds = urlencode($keyworlds);
|
|
|
|
|
|
//拼接搜索url链接
|
|
|
$start = ($page -1) * 50;
|
|
|
$google_url = 'google.com';
|
|
|
$google_domain = array(
|
|
|
'gm'=>'google.de',
|
|
|
'vc'=>'google.fr',
|
|
|
'vac'=>'google.es',
|
|
|
'ru'=>'google.ru',
|
|
|
'it'=>'google.it',
|
|
|
'jp'=>'google.co.jp'
|
|
|
);
|
|
|
if(!empty($google_domain[$site_code])) $google_url= $google_domain[$site_code];
|
|
|
//搜索使用的语种,默认是英语
|
|
|
$language = 'en';
|
|
|
$language_array = array('gm'=>'de','vc'=>'fr','vac'=>'es','ru'=>'ru','it'=>'it','jp'=>'jp');
|
|
|
if(!empty($language_array[$site_code])) $language = $language_array[$site_code];
|
|
|
|
|
|
//抓取google搜索结果
|
|
|
$this->load->library('Snoopy');
|
|
|
$snoopy = $this->snoopy;
|
|
|
$snoopy->maxredirs=0;
|
|
|
$snoopy->agent = '(compatible; MSIE 11; MSN 8; AOL 4.0; Windows 98)';//模拟浏览器
|
|
|
if($snoopy->fetch("http://www.$google_url/search?q=$search_worlds&start=$start&num=50&hl=$language"))
|
|
|
{
|
|
|
$response = $snoopy->results;
|
|
|
//分析google搜索结果,计算排名
|
|
|
if (false !== stripos($response,'<h1>302 Moved</h1>')) {
|
|
|
$rank['rank'] = -2;
|
|
|
}elseif (false !== stripos($response,$site_url)) {
|
|
|
preg_match_all('/<h3 class="r">(.*)<\/h3>/smUi',$response, $store);
|
|
|
foreach ($store[1] as $k=>$v) {
|
|
|
$ismatch = stripos($v,$site_url);
|
|
|
if (false !== $ismatch) {
|
|
|
//计算排名
|
|
|
$rank['rank'] = $start+$k+1;
|
|
|
//抓取关键词来源
|
|
|
$end=stripos($v,'&',$ismatch);
|
|
|
$source = substr($v,$ismatch,$end);
|
|
|
$source = explode('&',$source);
|
|
|
$rank['source'] = $source[0];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$rank['rank'] = -1;
|
|
|
}
|
|
|
|
|
|
return $rank;
|
|
|
}
|
|
|
|
|
|
public function test(){
|
|
|
$ranks=$this->get_search_content_by_yandex('Путеводитель по городу гуйлинь','www.chinahighlights.ru');
|
|
|
var_dump($ranks);
|
|
|
}
|
|
|
|
|
|
//计算关键词在yandex搜索引擎的排名
|
|
|
public function get_search_content_by_yandex($keyworlds,$site_url,$page=0,$sitecode=false)
|
|
|
{
|
|
|
$rank['rank'] = 0;
|
|
|
$rank['source'] = $site_url;
|
|
|
$rank['engines'] = 'yandex';
|
|
|
$startrank = $page*10;
|
|
|
$search_worlds = urlencode($keyworlds);
|
|
|
|
|
|
//抓取搜索结果数据
|
|
|
$this->load->library('Snoopy');
|
|
|
$snoopy = $this->snoopy;
|
|
|
$snoopy->host = 'yandex.ru';
|
|
|
$snoopy->referer = "http://www.yandex.ru/";
|
|
|
//$snoopy->maxredirs=0;
|
|
|
$snoopy->agent ='Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0) Gecko/20100101 Firefox/20.0';
|
|
|
//$snoopy->agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36';//模拟浏览器
|
|
|
if($snoopy->fetch("http://www.yandex.ru/yandsearch?p=$page&text=$search_worlds&lr=21436"))
|
|
|
{
|
|
|
$response = $snoopy->results;
|
|
|
//分析YANDEX搜索结果,计算排名
|
|
|
if (false !== stripos($response,'<h1>302 Found</h1>')) {
|
|
|
$rank['rank'] = -2;
|
|
|
}elseif (false !== stripos($response,$site_url)) {
|
|
|
preg_match_all("/<b class=\"b-serp-item__number\">(.*)<\/a>/smUi",$response, $store);
|
|
|
foreach ($store[1] as $k=>$v) {
|
|
|
$start_s=stripos($v,$site_url);
|
|
|
if (false!==$start_s) {
|
|
|
$rank['rank'] = $startrank+$k+1;
|
|
|
$end_s=stripos($v,'" ',$start_s);
|
|
|
$source = substr($v, $start_s, $end_s);
|
|
|
$sources = explode('" ',$source);
|
|
|
$rank['source']=$sources[0];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$rank['rank'] = -1;
|
|
|
}
|
|
|
return $rank;
|
|
|
}
|
|
|
|
|
|
//计算关键词在google搜索引擎的排名
|
|
|
public function get_search_content_by_yahoo($keyworlds,$site_url,$page=1,$sitecode=false)
|
|
|
{
|
|
|
$rank['rank'] = 0;
|
|
|
$rank['source'] = $site_url;
|
|
|
$site_url_array = explode('//', $site_url);
|
|
|
$site_url = $site_url_array[1];
|
|
|
$rank['engines'] = 'yahoo';
|
|
|
if ($page>3) {
|
|
|
$rank['rank'] = 151;
|
|
|
return $rank;
|
|
|
}
|
|
|
|
|
|
//拼接关键词
|
|
|
/*$key_array = explode(' ',$keyworlds);
|
|
|
$search_worlds='';
|
|
|
foreach ($key_array as $v) {
|
|
|
$search_worlds.='+'.$v;
|
|
|
}
|
|
|
$search_worlds = substr($search_worlds,1);*/
|
|
|
$search_worlds = urlencode($keyworlds);
|
|
|
$yahoourl='http://search.yahoo.com';
|
|
|
if($sitecode=='jp') $yahoourl='http://search.yahoo.co.jp';
|
|
|
|
|
|
$start = ($page -1) * 50+1;
|
|
|
$pstart = $page+4;
|
|
|
|
|
|
//抓取yahoo搜索结果
|
|
|
$this->load->library('Snoopy');
|
|
|
$snoopy = $this->snoopy;
|
|
|
$snoopy->maxredirs=0;
|
|
|
$snoopy->agent = '(compatible; MSIE 9; MSN 8; AOL 4.0; Windows 98)';//模拟浏览器
|
|
|
if($snoopy->fetch("$yahoourl/search;_ylt=A0SO8yDYHxBT6xQAWAFXNyoA?p=$search_worlds&n=100&ei=UTF-8&va_vt=any&vo_vt=any&ve_vt=any&vp_vt=any&vst=0&vf=all&vm=i&fl=0&fr=sfp&b=$start&pstart=$pstart"))
|
|
|
{
|
|
|
$response = $snoopy->results;
|
|
|
//分析yahoo搜索结果,计算排名
|
|
|
//出现被屏蔽情况
|
|
|
if(false !== stripos($response,'document has moved')){
|
|
|
$rank['rank'] = -2;
|
|
|
}else{
|
|
|
preg_match_all('/<div id=\"web\">(.*)<\/ol>/smUi',$response, $search_c);
|
|
|
if (false !== stripos($search_c[0][0],$site_url)) {
|
|
|
preg_match_all('/<li><a(.*)<\/a>/smUi',$search_c[0][0], $store);
|
|
|
foreach ($store[1] as $k=>$v) {
|
|
|
$ismatch = stripos($v,$site_url);
|
|
|
if (false !== $ismatch) {
|
|
|
//计算排名
|
|
|
$rank['rank'] = $start+$k+1;
|
|
|
//抓取关键词来源
|
|
|
$end=stripos($v,'"><b>',$ismatch);
|
|
|
$source = substr($v,$ismatch,$end);
|
|
|
$source = explode('"><b>',$source);
|
|
|
$rank['source'] = 'http://'.$source[0];
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$rank['rank'] = -1;
|
|
|
}
|
|
|
return($rank);
|
|
|
}
|
|
|
|
|
|
//计算关键词在百度搜索引擎的排名
|
|
|
public function get_search_content_by_baidu($keyworlds,$site_url='www.guilincits.com',$page=1,$sitecode=false)
|
|
|
{
|
|
|
$rank['rank'] = 0;
|
|
|
$rank['source'] = $site_url;
|
|
|
$rank['engines'] = 'baidu';
|
|
|
if ($page>3) {
|
|
|
$rank['rank'] = 151;
|
|
|
return $rank;
|
|
|
}
|
|
|
|
|
|
//拼接关键词
|
|
|
$key_array = explode(' ',$keyworlds);
|
|
|
$search_worlds='';
|
|
|
foreach ($key_array as $v) {
|
|
|
$search_worlds.='+'.$v;
|
|
|
}
|
|
|
$search_worlds = substr($search_worlds,1);
|
|
|
$start = ($page -1) * 50;
|
|
|
|
|
|
//抓取百度搜索结果
|
|
|
$this->load->library('Snoopy');
|
|
|
$snoopy = $this->snoopy;
|
|
|
$snoopy->maxredirs=0;
|
|
|
$snoopy->agent = '(compatible; MSIE 9; MSN 8; AOL 4.0; Windows 98)';//模拟浏览器
|
|
|
if($snoopy->fetch("http://www.baidu.com/s?wd=$search_worlds&pn=$start&rn=50&ie=utf-8"))
|
|
|
{
|
|
|
$response = $snoopy->results;
|
|
|
if (false !== stripos($response,$site_url)) {
|
|
|
preg_match_all('/result c-container(.*)<div class=\"c-tools\"/smUi',$response, $store);
|
|
|
foreach ($store[1] as $k=>$v) {
|
|
|
if (false !== stripos($v,$site_url)) {
|
|
|
//计算排名
|
|
|
$rank['rank'] = $start+$k+1;
|
|
|
//抓取关键词来源
|
|
|
preg_match_all('/url=(.*)\"/smUi',$v, $source_array);
|
|
|
$rank_source = 'http://www.baidu.com/link?url='.$source_array[1][0];
|
|
|
$rank['source']=$rank_source;
|
|
|
$ch = curl_init();
|
|
|
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
|
|
|
curl_setopt($ch, CURLOPT_NOBODY, 1); // 输出中包含body部分
|
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 30); // 设置超时防止死循环
|
|
|
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);// 使用自动跳转
|
|
|
curl_setopt($ch, CURLOPT_URL,$rank_source); // 想要获取内容的url
|
|
|
curl_exec ($ch);
|
|
|
$rank_source=curl_getinfo($ch);
|
|
|
$rank['source']=$rank_source['redirect_url'];
|
|
|
curl_close ($ch);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$rank['rank'] = -1;
|
|
|
}
|
|
|
return $rank;
|
|
|
}
|
|
|
|
|
|
//返回指定页面路径pagepath在指定时间内的成效信息
|
|
|
public function get_analytics_by_date($loadtotal=0){
|
|
|
$data=array();
|
|
|
//获取请求的日期范围以及请求的页面路径
|
|
|
$startdate=$this->input->post('startdate');
|
|
|
$enddate=$this->input->post('enddate');
|
|
|
$pagepath=$this->input->post('pagepath');
|
|
|
//如果开始时间为空则把开始时间设为往前七天
|
|
|
if ($startdate == '') {
|
|
|
$startdate = time()-7*24*60*60;
|
|
|
}else{
|
|
|
$startdate = strtotime($startdate);
|
|
|
}
|
|
|
//如果结束时间为空,则把结束时间设为当天
|
|
|
if ($enddate == '') {
|
|
|
$enddate = time();
|
|
|
}else{
|
|
|
$enddate = strtotime($enddate);
|
|
|
}
|
|
|
if ($startdate>$enddate) {
|
|
|
echo "请选择正确的日期";die();
|
|
|
}
|
|
|
//查取google分析数据
|
|
|
$data['analytics_list'] = $this->analytics_model->get_analytics_list($pagepath,50,$startdate,$enddate);
|
|
|
$total_visit['pv'] = $total_visit['uv']=$total_visit['agv_time']=$total_visit['entrances']=0;
|
|
|
$analytics_count=0;
|
|
|
//访问量汇总
|
|
|
foreach ($data['analytics_list'] as $v) {
|
|
|
$total_visit['pv']+=$v->kwa_pageviews;
|
|
|
$total_visit['uv']+=$v->kwa_uniquepageviews;
|
|
|
$total_visit['agv_time']+=$v->kwa_avgtimeonpage;
|
|
|
$total_visit['entrances']+=$v->kwa_entrances;
|
|
|
$analytics_count++;
|
|
|
}
|
|
|
$analytics_count==0 ? $analytics_count=1 : null;
|
|
|
$total_visit['agv_time']=ceil($total_visit['agv_time']/$analytics_count);
|
|
|
$data['total_visit']=$total_visit;
|
|
|
//如果loadtotal==1,则只返回google分析的汇总数据;如果loadtotal==0,则返回明细数据表
|
|
|
$data['loadtotal']=$loadtotal;
|
|
|
|
|
|
$this->load->view('keyworlds/analytics',$data);
|
|
|
}
|
|
|
|
|
|
//从google分析接口获取数据并入库,$start_index:从接口提取数据时的起始条数
|
|
|
public function get_google_analytics_data($sitecode='cht',$start_index=1){
|
|
|
session_start();
|
|
|
//判断该站点是否已经更新.
|
|
|
$update_count = $this->analytics_model->get_update_count($sitecode);
|
|
|
$update_count;
|
|
|
$flag = false;
|
|
|
switch ($sitecode)
|
|
|
{
|
|
|
case 'cht':
|
|
|
case 'jp':
|
|
|
case 'ct':
|
|
|
//对于以上三个站点如果数据库中存在的数量大于当前起始数,则表示该站点已经更新
|
|
|
if ($update_count>$start_index) $flag = true;
|
|
|
break;
|
|
|
default:
|
|
|
//对于其他站点如果数据库中存在的数量大于0,则表示该站点已经更新
|
|
|
if ($update_count>0) {
|
|
|
$flag = true;
|
|
|
}
|
|
|
}
|
|
|
//如果站点已经更新,则放弃从google分析抓取数据
|
|
|
if ($flag) {
|
|
|
echo 'finished';
|
|
|
exit();
|
|
|
}
|
|
|
//初始化Google_Client
|
|
|
require_once APPPATH.'libraries/Google_Client/Google_Client.php';
|
|
|
require_once APPPATH.'libraries/Google_Client/contrib/Google_AnalyticsService.php';
|
|
|
$baseurl = site_url("Keyworlds/get_google_analytics_data/");
|
|
|
$revokeUrl = $baseurl . '?action=revoke';
|
|
|
|
|
|
//google分析接口过滤条件
|
|
|
$site_config=array('cht'=>5120,'gm'=>6028186,'vc'=>68571571,'vac'=>68484932,'ru'=>68577400,'it'=>68564185,'jp'=>574459,'tbt'=>715050,'sht'=>4705635,'yz'=>68484504,'gl'=>68460695,'mbj'=>68479244,'ct'=>8567691);
|
|
|
$profileId = $site_config[$sitecode]; //网站标志ID
|
|
|
$analytics_start_time = date('Y-m-d',time()-7*24*60*60); //获取数据的开始时间
|
|
|
$analytics_end_time = date('Y-m-d',time()); //获取数据的结束时间
|
|
|
|
|
|
//授权设置
|
|
|
$client = new Google_Client();
|
|
|
$client->setClientId('50804699713-l5sfpffqpo4kbrbhk9tf53049labr214.apps.googleusercontent.com');
|
|
|
$client->setClientSecret('_IpQ8Qi1QFlogmxiMhIRHgEa');
|
|
|
$client->setRedirectUri('http://localhost:9999/info.php/Keyworlds/get_google_analytics_data');
|
|
|
$client->setApplicationName('Google Analytics Application');
|
|
|
$client->setScopes(array('https://www.googleapis.com/auth/analytics.readonly'));
|
|
|
$client->setUseObjects(true);
|
|
|
$client->setAccessType('offline');
|
|
|
|
|
|
//解除授权
|
|
|
if (isset($_GET['action']) && $_GET['action'] == 'revoke') {
|
|
|
$accessToken = $_SESSION['access_token'];
|
|
|
if ($accessToken) {
|
|
|
$tokenObj = json_decode($accessToken);
|
|
|
$client->revokeToken($tokenObj->refresh_token);
|
|
|
unset($_SESSION['access_token']);
|
|
|
}
|
|
|
header("Location: $baseurl");
|
|
|
}
|
|
|
//获取授权
|
|
|
if (isset($_SESSION['access_token'])) {
|
|
|
$accessToken = $_SESSION['access_token'];
|
|
|
$client->setAccessToken($accessToken);
|
|
|
}else{
|
|
|
//授权过期重新生成access_token
|
|
|
$client->refreshToken('1/ZX7Qo-m_rxIL1_LqE8vM2sYKATkAJxm0Fc5g7BRXeo0');
|
|
|
$_SESSION['access_token'] = $client->getAccessToken();
|
|
|
//$accessToken = $client->authenticate();
|
|
|
//$_SESSION['access_token'] = $accessToken;
|
|
|
}
|
|
|
|
|
|
//获取数据
|
|
|
if ($client->getAccessToken())
|
|
|
{
|
|
|
$analytics = new Google_AnalyticsService($client);
|
|
|
//获取详细信息
|
|
|
$results = $analytics->data_ga->get(
|
|
|
'ga:' . $profileId,
|
|
|
$analytics_start_time,
|
|
|
$analytics_end_time,
|
|
|
'ga:visits',
|
|
|
array(
|
|
|
'dimensions' => 'ga:pagePath,ga:source,ga:keyword',
|
|
|
'metrics' => 'ga:pageviews,ga:uniquePageviews,ga:avgTimeOnPage,ga:entrances,ga:exitRate,ga:pageValue',
|
|
|
'sort' => '-ga:pageviews',
|
|
|
'max-results' => '10000',
|
|
|
'start-index'=>$start_index
|
|
|
)
|
|
|
);
|
|
|
}
|
|
|
$_SESSION['access_token'] = $client->getAccessToken();
|
|
|
|
|
|
$columnheader=array('pagepath','source','keyword','pv','uv','avgtimeonpage','entrances','exitrate','pageValue');
|
|
|
$output=array();
|
|
|
$txt='';
|
|
|
foreach ($results->getRows() as $row)
|
|
|
{
|
|
|
foreach ($row as $i=>$cell) {
|
|
|
$table[$columnheader[$i]] = htmlspecialchars($cell, ENT_NOQUOTES);
|
|
|
}
|
|
|
$txt.=$table['source'].'|@|'.$table['pv'].'|@|'.$table['uv'].'|@|'.$table['avgtimeonpage'].'|@|'.$table['entrances'].'|@|'.$table['exitrate'].'|@|'.$table['pageValue'].'|@|'.time().'|@|'.$sitecode.'|@|'.$table['pagepath'].'|@|'.substr($table['keyword'],0,255)."\r\n";
|
|
|
$output[]=$table;
|
|
|
unset($table);
|
|
|
}
|
|
|
$fp=fopen(APPPATH.'helpers/analytics_data.txt','wb');
|
|
|
fwrite ($fp,$txt);
|
|
|
fclose($fp);
|
|
|
$this->analytics_model->add_analytics_by_txt();
|
|
|
echo $sitecode;
|
|
|
}
|
|
|
|
|
|
//从cvs文件导入关键词
|
|
|
public function hand_add($parentid,$bookname)
|
|
|
{
|
|
|
$row = 1;//第一行开始
|
|
|
$filename = APPPATH.$bookname.'.csv';
|
|
|
if(($handle = fopen($filename, "r")) !== false)
|
|
|
{
|
|
|
while(($dataSrc = fgetcsv($handle)) !== false)
|
|
|
{
|
|
|
$num = count($dataSrc);
|
|
|
for ($c=0; $c < $num; $c++)//列 column
|
|
|
{
|
|
|
if($row === 1)//第一行作为字段
|
|
|
{
|
|
|
$dataName[] = $dataSrc[$c];//字段名称
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
foreach ($dataName as $k=>$v)
|
|
|
{
|
|
|
if($k == $c)//对应的字段
|
|
|
{
|
|
|
$dataRtn[$v] = @iconv('GBK','UTF-8',$dataSrc[$c]);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if (!empty($dataRtn)) {
|
|
|
$insert_id = $this->InfoStructures_model->Add($parentid);
|
|
|
if ($insert_id && $kw_id=$this->Keywords_model->add_keyworlds($dataRtn['keyword'],$dataRtn['site'],time()-24*60*60,$insert_id,1)){
|
|
|
$datas[] = array('name' => 'ok', 'value' => $this->Keywords_model->get_keyworld($kw_id));
|
|
|
}else{
|
|
|
$datas[] = array('name' => 'no', 'value' => $this->lang->line('form_info_error'));
|
|
|
}
|
|
|
echo $insert_id;
|
|
|
$data[]=$dataRtn;
|
|
|
}
|
|
|
|
|
|
$row++;
|
|
|
}
|
|
|
fclose($handle);
|
|
|
var_dump($data);
|
|
|
echo 'ok';
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//收录查询结果
|
|
|
public function check_embody(){
|
|
|
$this->load->model('InfoMetas_model');
|
|
|
$this->load->model('InfoSMS_model');
|
|
|
//获取未收录的数据
|
|
|
$today_date=date('Y-m-d',time()-3*24*60*60);
|
|
|
$embody=$this->InfoMetas_model->get_unembody_content($today_date);
|
|
|
if (empty($embody)) {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
//页面url
|
|
|
$embody=$embody[0];
|
|
|
if($embody->ic_url=='') return false;
|
|
|
$site=$this->config->item('site');
|
|
|
$site_url=$site[$embody->ic_sitecode]['site_url'];
|
|
|
$site_url=$site_url.$embody->ic_url;
|
|
|
//收录查询搜索url
|
|
|
$search_worlds ='site:'.$site_url;
|
|
|
$search_worlds;
|
|
|
$google_url = 'google.com';
|
|
|
$language = 'en';
|
|
|
$language_array = array('gm'=>'de','vc'=>'fr','vac'=>'es','ru'=>'ru','it'=>'it','jp'=>'jp');
|
|
|
if(!empty($language_array[$embody->ic_sitecode])) $language = $language_array[$embody->ic_sitecode];
|
|
|
|
|
|
|
|
|
//抓取google搜索结果
|
|
|
$this->load->library('Snoopy');
|
|
|
$snoopy = $this->snoopy;
|
|
|
$snoopy->maxredirs=0;
|
|
|
$snoopy->agent = '(compatible; MSIE 9; MSN 8; AOL 4.0; Windows 98)';//模拟浏览器
|
|
|
if($snoopy->fetch("http://www.$google_url/search?q=$search_worlds&start=0&num=10&hl=$language"))
|
|
|
{
|
|
|
$response = $snoopy->results;
|
|
|
if (false !== stripos($response,'<h1>302 Moved</h1>')) {
|
|
|
echo 302;
|
|
|
return false;
|
|
|
}
|
|
|
preg_match_all('/<h3 class="r">(.*)<\/h3>/smUi',$response, $store);
|
|
|
if (isset($store[1][0]) && false !== stripos($store[1][0],$site_url)) {
|
|
|
$ismatch = stripos($store[1][0],$site_url);
|
|
|
$end=stripos($store[1][0],'&',$ismatch);
|
|
|
$source = substr($store[1][0],$ismatch,$end);
|
|
|
$source = explode('&',$source);
|
|
|
$source = $source[0];
|
|
|
if ($source==$site_url) {
|
|
|
$this->InfoMetas_model->update($embody->im_ic_id,'meta_embody','1');
|
|
|
$this->InfoSMS_model->add('info',$embody->im_ic_id,$embody->ic_author,'lyy','已收录');
|
|
|
echo 'ok';
|
|
|
}else{
|
|
|
$this->InfoMetas_model->update($embody->im_ic_id,'meta_embody',date('Y-m-d H:i:s'));
|
|
|
$this->InfoSMS_model->add('info',$embody->im_ic_id,$embody->ic_author,'lyy','未被收录');
|
|
|
echo 'no';
|
|
|
}
|
|
|
}else{
|
|
|
$this->InfoMetas_model->update($embody->im_ic_id,'meta_embody',date('Y-m-d H:i:s'));
|
|
|
$this->InfoSMS_model->add('info',$embody->im_ic_id,$embody->ic_author,'lyy','未被收录');
|
|
|
echo 'no';
|
|
|
}
|
|
|
}
|
|
|
echo '<br>end';
|
|
|
}
|
|
|
|
|
|
//定时批量更新CDN
|
|
|
public function update_cdn()
|
|
|
{
|
|
|
$this->load->model('Logs_model');
|
|
|
$last_update=$this->Logs_model->get_last_cdn_update_info();
|
|
|
if (empty($last_update)) {
|
|
|
$last_log=$this->Logs_model->get_last_log();
|
|
|
$this->Logs_model->write('update_cdn',$last_log->log_id);
|
|
|
$last_update->log_res_id=$last_log->log_id;
|
|
|
}
|
|
|
$last_update_id=$last_update->log_res_id;
|
|
|
$list=$this->Logs_model->get_uncdn_list($last_update_id);
|
|
|
if (empty($list)) {
|
|
|
echo 'updated';
|
|
|
die();
|
|
|
}
|
|
|
//设置需要更新的url路径
|
|
|
$site_path=array();
|
|
|
$path_array=array();
|
|
|
$site_array=array('vac','ru','it');//需要更新的站点
|
|
|
foreach ($list as $v) {
|
|
|
if (in_array($v->is_sitecode, $site_array)) {
|
|
|
if(!isset($site_path[$v->is_sitecode])){
|
|
|
$site_path[$v->is_sitecode]='';
|
|
|
$path_array[$v->is_sitecode]=array();
|
|
|
}
|
|
|
if (!in_array($v->ic_url, $path_array[$v->is_sitecode])) {
|
|
|
$site_path[$v->is_sitecode].="&path=".$v->ic_url;
|
|
|
$path_array[$v->is_sitecode][]=$v->ic_url;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
//已经给是最新的了
|
|
|
if(empty($site_path)) {
|
|
|
echo 'updated.';
|
|
|
die();
|
|
|
}
|
|
|
|
|
|
//更新CDN缓存
|
|
|
$notice=array();
|
|
|
$flag=false;
|
|
|
$siteconfig=$this->config->item('site');
|
|
|
foreach ($site_path as $k => $cdn) {
|
|
|
$pad = str_replace('http://','',$siteconfig[$k]['site_url']);
|
|
|
$result = file_get_contents('https://openapi.us.cdnetworks.com/purge/rest/doPurge?user=ycc@chinahighlights.com&pass=cXi2UbsTrw9Urv&pad='.$pad.'&type=item'.$cdn.'&output=json') ;
|
|
|
$result = json_decode($result,true);
|
|
|
if($result['resultCode'] != 200) {
|
|
|
$notice[] = $k.':'.$result['notice'].$result['details'];
|
|
|
}else {
|
|
|
$notice[]=$k.':'.$result['resultCode'].'<br>'.$cdn;
|
|
|
$flag=TRUE;
|
|
|
}
|
|
|
}
|
|
|
//修改最近更新的信息的log_id,方便下次更新读取数据
|
|
|
if ($flag) {
|
|
|
$lastinfo=end($list);
|
|
|
$this->Logs_model->update('update_cdn',$lastinfo->log_id);
|
|
|
}
|
|
|
|
|
|
var_dump($notice);
|
|
|
}
|
|
|
|
|
|
public function mobile_friendly_test()
|
|
|
{
|
|
|
set_time_limit(60);
|
|
|
$url=$this->input->post('pageurl');
|
|
|
$googleapis='https://www.googleapis.com/pagespeedonline/v3beta1/mobileReady?url='.$url;
|
|
|
|
|
|
$ch = curl_init();
|
|
|
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0);
|
|
|
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22');
|
|
|
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
|
|
|
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
|
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
|
|
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
|
|
curl_setopt($ch, CURLOPT_URL, $googleapis);
|
|
|
$response2 = curl_exec($ch);
|
|
|
$response = json_decode($response2);
|
|
|
|
|
|
$data['pageurl']=$url;
|
|
|
$data['score']=60;
|
|
|
$data['pass']=false;
|
|
|
isset($response->ruleGroups->USABILITY->score) && $data['score']=$response->ruleGroups->USABILITY->score;
|
|
|
isset($response->ruleGroups->USABILITY->pass) && $data['pass']=$response->ruleGroups->USABILITY->pass;
|
|
|
if (empty($response2)) {
|
|
|
$pass_text='请求超时';
|
|
|
$title='请求超时,请稍后再试!';
|
|
|
$link_color='text-error';
|
|
|
$data['score']='-';
|
|
|
}
|
|
|
elseif ($data['pass']) {
|
|
|
$pass_text='OK';
|
|
|
$link_color='text-info';
|
|
|
$title='Awesome! This page is mobile-friendly (友好度'.$data['score'].', 总分100分)';
|
|
|
}else{
|
|
|
$pass_text='No';
|
|
|
$title='Not mobile-friendly (友好度'.$data['score'].', 总分100分)';
|
|
|
$link_color='text-error';
|
|
|
}
|
|
|
$html='<a title="'.$title.'" class="'.$link_color.'" target="__blank" href="https://developers.google.com/speed/pagespeed/insights/?utm_source=analytics&tab=mobile&url='.$data['pageurl'].'"><span>'.$pass_text.',友好度:'.$data['score'].'</span></a>';
|
|
|
echo $html;
|
|
|
}
|
|
|
}
|