You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/application/third_party/pagespeed/controllers/index.php

133 lines
6.0 KiB
PHTML

<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Index extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('PageSpeedData_model');
}
public function index() {
$this->permission->is_admin();
$data = array();
$data['score_data'] = $this->PageSpeedData_model->score_chart($this->config->item('site_code'));
$this->load->view('bootstrap3/header', $data);
$this->load->view('welcome');
$this->load->view('bootstrap3/footer');
}
//根据分数段来查询页面
public function search_score() {
$this->permission->is_admin();
$data = array();
$device = $this->input->post('device');
$start_score = $this->input->post('start_score');
$end_score = $this->input->post('end_score');
$data['score_data_list'] = $this->PageSpeedData_model->search_score_list($start_score, $end_score, $this->config->item('site_code'), $device);
if (empty($data['score_data_list'])) {
echo json_encode('没有找到数据');
} else {
echo json_encode($this->load->view('search', $data, true));
}
}
//自动抓取分数和排名
public function auto($sitecode = '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 show_score() {
$psd_URL = $this->input->get_post('psd_URL');
$psd_SiteCode = $this->input->get_post('psd_SiteCode');
if (empty($psd_URL) || empty($psd_SiteCode)) {
echo json_encode(array('result' => 'error', 'data' => 'url或站点为空'));
return false;
}
$pagespeed_data = $this->PageSpeedData_model->detail($psd_URL, $psd_SiteCode);
if (!empty($pagespeed_data)) {
echo json_encode(array('result' => 'ok', 'data' => 'M:' . $pagespeed_data->psd_MobileScore . ',D:' . $pagespeed_data->
psd_DesktopScore));
}
}
public function run($psd_URL = false, $psd_SiteCode = false) {
if (empty($psd_URL) || empty($psd_SiteCode)) {
$psd_URL = $this->input->get_post('psd_URL');
$psd_SiteCode = $this->input->get_post('psd_SiteCode');
if (empty($psd_URL) || empty($psd_SiteCode)) {
8 years ago
echo json_encode(array('result' => 'error', 'data' => 'url或站点为空'));
return false;
}
}
$sites = $this->config->item('site');
if (empty($sites[$psd_SiteCode])) {
8 years ago
echo json_encode(array('result' => 'error', 'data' => '找不到站点'));
return false;
}
$site_url = rtrim($sites[$psd_SiteCode]['site_url'], '/'); //删除/因为URL已经含有了
$run_URL = urlencode(trim($site_url . $psd_URL));
$pagespeed_data = $this->PageSpeedData_model->detail($psd_URL, $psd_SiteCode);
$PageSpeedData = new StdClass;
$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";
$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";
//echo $desktop_url;die();
$desktop_data = GET_HTTP($desktop_url);
$mobile_data = GET_HTTP($mobile_url);
if (empty($desktop_data) || empty($mobile_data)) {
8 years ago
echo json_encode(array('result' => 'error', 'data' => 'API不返回数据'));
return false;
}
$desktop_object = json_decode($desktop_data);
$mobile_object = json_decode($mobile_data);
if (isset($desktop_object->error) || isset($mobile_object->error)) {
$this->PageSpeedData_model->update_error($pagespeed_data->psd_id);
8 years ago
echo json_encode(array('result' => 'error', 'data' => 'API返回错误'));
log_message('error ', 'pagespeed_error:' . json_encode($desktop_object) . ' ' . json_encode($mobile_object));
return false;
}
if ($desktop_object->responseCode !== 200 || $mobile_object->responseCode !== 200) {
$this->PageSpeedData_model->update_error($pagespeed_data->psd_id);
8 years ago
echo json_encode(array('result' => 'error', 'data' => 'API返回错误网页打不开'));
log_message('error ', 'pagespeed_error:' . json_encode($desktop_object) . ' ' . json_encode($mobile_object));
return FALSE;
}
$PageSpeedData->psd_DesktopScore = $desktop_object->ruleGroups->SPEED->score;
$PageSpeedData->psd_MobileScore = $mobile_object->ruleGroups->SPEED->score;
$PageSpeedData->psd_DesktopData = $desktop_data;
$PageSpeedData->psd_MobileData = $mobile_data;
$PageSpeedData->psd_URL = $psd_URL;
$PageSpeedData->psd_Datetime = date('Y-m-d H:i:s', time());
$PageSpeedData->psd_SiteCode = $psd_SiteCode;
$PageSpeedData->psd_ErrorCount = 0;
if (empty($pagespeed_data)) {
$psd_id = $this->PageSpeedData_model->add('PageSpeedData', $PageSpeedData);
} else {
$where = array('psd_id' => $pagespeed_data->psd_id);
$this->PageSpeedData_model->update('PageSpeedData', $PageSpeedData, $where);
}
echo json_encode(array('result' => 'ok', 'data' => 'M:' . $PageSpeedData->psd_MobileScore . ',D:' . $PageSpeedData->psd_DesktopScore));
}
}