自动抓取,自动添加数据

hotfix/远程访问多媒体中心
尹诚诚 8 years ago
parent 93a4d84abd
commit 0c84f6ca62

@ -16,12 +16,25 @@ class Index extends CI_Controller {
//自动抓取分数和排名 //自动抓取分数和排名
public function auto($sitecode = 'cht') { public function auto($sitecode = 'cht') {
$this->run('/', 'cht'); //添加数据,信息平台中发布的,并且当前数据库没有的
$this->PageSpeedData_model->insert_list($sitecode);
$update_list = $this->PageSpeedData_model->get_update_list($sitecode, 2);
if (empty($update_list)) {
echo 'all done!';
return;
}
foreach ($update_list as $item) {
$this->run($item->psd_URL, $item->psd_SiteCode);
}
} }
public function run($psd_URL, $psd_SiteCode) { public function run($psd_URL = false, $psd_SiteCode = false) {
if (empty($psd_URL) || empty($psd_SiteCode)) { if (empty($psd_URL) || empty($psd_SiteCode)) {
return false; $psd_URL = $this->input->get_post('psd_URL');
$psd_SiteCode = $this->input->get_post('psd_SiteCode');
if (empty($psd_URL) || empty($psd_SiteCode)) {
return false;
}
} }
$sites = $this->config->item('site'); $sites = $this->config->item('site');
if (empty($sites[$psd_SiteCode])) { if (empty($sites[$psd_SiteCode])) {
@ -33,9 +46,9 @@ class Index extends CI_Controller {
$PageSpeedData = new StdClass; $PageSpeedData = new StdClass;
$desktop_url = "https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=desktop&locale=zh_CN&url=$run_URL"; $desktop_url = "https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=desktop&locale=zh_CN&url=$run_URL";
$desktop_url = "http://pagespeed.mycht.cn/pagespeedonline/v2/runPagespeed?strategy=desktop&locale=zh_CN&url=$run_URL"; // $desktop_url = "http://pagespeed.mycht.cn/pagespeedonline/v2/runPagespeed?strategy=desktop&locale=zh_CN&url=$run_URL";
$mobile_url = "https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=mobile&locale=zh_CN&url=$run_URL"; $mobile_url = "https://www.googleapis.com/pagespeedonline/v2/runPagespeed?strategy=mobile&locale=zh_CN&url=$run_URL";
$mobile_url = "http://pagespeed.mycht.cn/pagespeedonline/v2/runPagespeed?strategy=mobile&locale=zh_CN&url=$run_URL"; //$mobile_url = "http://pagespeed.mycht.cn/pagespeedonline/v2/runPagespeed?strategy=mobile&locale=zh_CN&url=$run_URL";
//echo $desktop_url;die(); //echo $desktop_url;die();
$desktop_data = GET_HTTP($desktop_url); $desktop_data = GET_HTTP($desktop_url);
$mobile_data = GET_HTTP($mobile_url); $mobile_data = GET_HTTP($mobile_url);
@ -45,14 +58,19 @@ class Index extends CI_Controller {
$desktop_object = json_decode($desktop_data); $desktop_object = json_decode($desktop_data);
$mobile_object = json_decode($mobile_data); $mobile_object = json_decode($mobile_data);
if (!empty($desktop_object->error) || !empty($mobile_object->error)) { if (!empty($desktop_object->error) || !empty($mobile_object->error)) {
$this->PageSpeedData_model->update_error($pagespeed_data->psd_id);
echo 'pagespeed_error:' . json_encode($desktop_object) . ' ' . json_encode($mobile_object);
log_message('error ', 'pagespeed_error:' . json_encode($desktop_object) . ' ' . json_encode($mobile_object));
return false; return false;
} }
if (!$desktop_object->responseCode == '200' || !$mobile_object->responseCode == '200') { if (!$desktop_object->responseCode == '200' || !$mobile_object->responseCode == '200') {
echo 'ERROR:' . $desktop_object->responseCode . ' ' . $mobile_object->responseCode; $this->PageSpeedData_model->update_error($pagespeed_data->psd_id);
echo 'pagespeed_error:' . json_encode($desktop_object) . ' ' . json_encode($mobile_object);
log_message('error ', 'pagespeed_error:' . json_encode($desktop_object) . ' ' . json_encode($mobile_object));
return FALSE; return FALSE;
} }
$PageSpeedData->psd_DesktopScore = $desktop_object->ruleGroups->SPEED->score; $PageSpeedData->psd_DesktopScore = $desktop_object->ruleGroups->SPEED->score;
$PageSpeedData->psd_MobileScore = $mobile_object->ruleGroups->SPEED->score; $PageSpeedData->psd_MobileScore = $mobile_object->ruleGroups->SPEED->score;
$PageSpeedData->psd_DesktopData = $desktop_data; $PageSpeedData->psd_DesktopData = $desktop_data;
@ -61,14 +79,14 @@ class Index extends CI_Controller {
$PageSpeedData->psd_Datetime = date('Y-m-d H:i:s', time()); $PageSpeedData->psd_Datetime = date('Y-m-d H:i:s', time());
$PageSpeedData->psd_SiteCode = $psd_SiteCode; $PageSpeedData->psd_SiteCode = $psd_SiteCode;
$PageSpeedData->psd_ErrorCount = 0; $PageSpeedData->psd_ErrorCount = 0;
if (empty($pagespeed_data)) { if (empty($pagespeed_data)) {
$psd_id = $this->PageSpeedData_model->add('PageSpeedData', $PageSpeedData); $psd_id = $this->PageSpeedData_model->add('PageSpeedData', $PageSpeedData);
} else { } else {
$where = array('psd_id' => $pagespeed_data->psd_id); $where = array('psd_id' => $pagespeed_data->psd_id);
$this->PageSpeedData_model->update('PageSpeedData', $PageSpeedData, $where); $this->PageSpeedData_model->update('PageSpeedData', $PageSpeedData, $where);
} }
echo $run_URL . '<br/>'; echo json_encode($pagespeed_data);
} }
} }

@ -22,7 +22,7 @@ class PageSpeedData_model extends CI_Model {
$this->init(); $this->init();
$this->topnum = 1; $this->topnum = 1;
$this->where = ' AND psd.psd_URL=' . $this->INFO->escape($psd_URL); $this->where = ' AND psd.psd_URL=' . $this->INFO->escape($psd_URL);
$this->where = ' AND psd.psd_SiteCode=' . $this->INFO->escape($psd_SiteCode); $this->where .= ' AND psd.psd_SiteCode=' . $this->INFO->escape($psd_SiteCode);
return $this->get_list(); return $this->get_list();
} }
@ -34,10 +34,64 @@ class PageSpeedData_model extends CI_Model {
} }
} }
public function insert_list($psd_SiteCode) {
$sql = "
INSERT INTO PageSpeedData
(
psd_URL
,psd_SiteCode
)
SELECT TOP 10 ic.ic_url
,ic.ic_sitecode
FROM Tourmanager.dbo.infoContents ic
WHERE ic.ic_status = 1
AND ic.ic_url<>''
AND ic.ic_sitecode = ?
AND NOT EXISTS(
SELECT TOP 1 1
FROM PageSpeedData psd
WHERE psd.psd_URL = ic.ic_url
AND psd.psd_SiteCode = ic.ic_sitecode
)
ORDER BY
ic.ic_datetime DESC
";
$this->INFO->query($sql,array($psd_SiteCode));
}
public function get_update_list($psd_SiteCode, $topnum = 3) {
$this->init();
$this->topnum = $topnum;
$this->where = ' AND psd.psd_SiteCode=' . $this->INFO->escape($psd_SiteCode);
$this->where .= ' AND ISNULL(psd.psd_Datetime,1999) < GETDATE()-1 ';
$this->orderby = ' ORDER BY psd_Datetime ASC ';
return $this->get_list();
}
public function update($table, $data, $where) { public function update($table, $data, $where) {
$this->INFO->update($table, $data, $where); $this->INFO->update($table, $data, $where);
} }
//记录错误次数
public function update_error($psd_id) {
$sql = "
UPDATE PageSpeedData
SET psd_ErrorCount = psd_ErrorCount+1
, psd_Datetime=GETDATE()
WHERE psd_id = ?
";
$this->INFO->query($sql, array($psd_id));
//删除错误数大于3的数据保持没有冗余数据
$sql = " DELETE FROM PageSpeedData WHERE psd_ErrorCount>3 ";
$this->INFO->query($sql);
}
//删除数据
// public function delete($psd_id) {
// $sql = " DELETE FROM PageSpeedData WHERE psd_id=? ";
// return $this->INFO->query($sql, array($psd_id));
// }
public function get_list() { public function get_list() {
$this->topnum ? $sql = "SELECT TOP " . $this->topnum : $sql = "SELECT "; $this->topnum ? $sql = "SELECT TOP " . $this->topnum : $sql = "SELECT ";
$sql .= " $sql .= "

Loading…
Cancel
Save