diff --git a/application/third_party/pagespeed/controllers/index.php b/application/third_party/pagespeed/controllers/index.php index c3ffcc6c..84e81a3f 100644 --- a/application/third_party/pagespeed/controllers/index.php +++ b/application/third_party/pagespeed/controllers/index.php @@ -11,7 +11,27 @@ class Index extends CI_Controller { } 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, $device, $this->config->item('site_code')); + if (empty($data['score_data_list'])) { + echo json_encode('没有找到数据'); + } else { + echo json_encode($this->load->view('search', $data, true)); + } } //自动抓取分数和排名 @@ -20,11 +40,13 @@ class Index extends CI_Controller { $this->PageSpeedData_model->insert_list($sitecode); $update_list = $this->PageSpeedData_model->get_update_list($sitecode, 2); if (empty($update_list)) { - echo 'all done!'; + echo'all done!'; return; } + foreach ($update_list as $item) { - $this->run($item->psd_URL, $item->psd_SiteCode); + $this->run($item->psd_URL, $item-> + psd_SiteCode); } } @@ -37,7 +59,8 @@ class Index extends CI_Controller { } $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)); + echo json_encode(array('result' => 'ok', 'data' => 'M:' . $pagespeed_data->psd_MobileScore . ',D:' . $pagespeed_data-> + psd_DesktopScore)); } } @@ -47,6 +70,7 @@ class Index extends CI_Controller { $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; } } diff --git a/application/third_party/pagespeed/models/PageSpeedData_model.php b/application/third_party/pagespeed/models/PageSpeedData_model.php index 5ba8e070..e8008b85 100644 --- a/application/third_party/pagespeed/models/PageSpeedData_model.php +++ b/application/third_party/pagespeed/models/PageSpeedData_model.php @@ -56,7 +56,7 @@ class PageSpeedData_model extends CI_Model { ORDER BY ic.ic_datetime ASC "; - $this->INFO->query($sql,array($psd_SiteCode)); + $this->INFO->query($sql, array($psd_SiteCode)); } public function get_update_list($psd_SiteCode, $topnum = 3) { @@ -124,4 +124,51 @@ class PageSpeedData_model extends CI_Model { } } + public function search_score_list($start_score, $end_score, $psd_SiteCode, $device = 'moblie') { + $this->init(); + $this->topnum = 50; + $this->where = ' AND psd.psd_SiteCode=' . $this->INFO->escape($psd_SiteCode); + if ($device == 'moblie') { + $this->where = " AND psd.psd_MobileScore BETWEEN $start_score AND $end_score "; + $this->orderby = ' ORDER BY psd_MobileScore ASC '; + } else { + $this->where = " AND psd.psd_DesktopScore BETWEEN $start_score AND $end_score "; + $this->orderby = ' ORDER BY psd_DesktopScore ASC '; + } + return $this->get_list(); + } + + //分数段统计 + public function score_chart($psd_SiteCode) { + $sql = " + SELECT COUNT(psd.psd_id) AS [page_count] + ,AVG(psd.psd_DesktopScore)AS [d_avg] + ,COUNT(CASE WHEN psd.psd_DesktopScore BETWEEN 96 AND 100 THEN 1 END) AS [d96_100] + ,COUNT(CASE WHEN psd.psd_DesktopScore BETWEEN 90 AND 95 THEN 1 END) AS [d90_95] + ,COUNT(CASE WHEN psd.psd_DesktopScore BETWEEN 86 AND 89 THEN 1 END) AS [d86_89] + ,COUNT(CASE WHEN psd.psd_DesktopScore BETWEEN 80 AND 85 THEN 1 END) AS [d80_85] + ,COUNT(CASE WHEN psd.psd_DesktopScore BETWEEN 70 AND 79 THEN 1 END) AS [d70_79] + ,COUNT(CASE WHEN psd.psd_DesktopScore BETWEEN 60 AND 69 THEN 1 END) AS [d60_69] + ,COUNT(CASE WHEN psd.psd_DesktopScore<60 THEN 1 END) AS [d60_0] + ,AVG(psd.psd_MobileScore)AS [m_avg] + ,COUNT(CASE WHEN psd.psd_MobileScore BETWEEN 96 AND 100 THEN 1 END) AS [m96_100] + ,COUNT(CASE WHEN psd.psd_MobileScore BETWEEN 90 AND 95 THEN 1 END) AS [m90_95] + ,COUNT(CASE WHEN psd.psd_MobileScore BETWEEN 86 AND 89 THEN 1 END) AS [m86_89] + ,COUNT(CASE WHEN psd.psd_MobileScore BETWEEN 80 AND 85 THEN 1 END) AS [m80_85] + ,COUNT(CASE WHEN psd.psd_MobileScore BETWEEN 70 AND 79 THEN 1 END) AS [m70_79] + ,COUNT(CASE WHEN psd.psd_MobileScore BETWEEN 60 AND 69 THEN 1 END) AS [m60_69] + ,COUNT(CASE WHEN psd.psd_MobileScore<60 THEN 1 END) AS [m60_0] + FROM PageSpeedData psd + WHERE 1=1 + AND psd.psd_SiteCode=? + "; + $query = $this->INFO->query($sql, array($psd_SiteCode)); + if ($query->num_rows() > 0) { + $row = $query->row(); + return $row; + } else { + return FALSE; + } + } + } diff --git a/application/third_party/pagespeed/views/search.php b/application/third_party/pagespeed/views/search.php new file mode 100644 index 00000000..1d4dac44 --- /dev/null +++ b/application/third_party/pagespeed/views/search.php @@ -0,0 +1,43 @@ + $item) { + +} +?> + + +
# | +页面 | +移动端 | +桌面端 | +更新时间 | +操作 | +
---|---|---|---|---|---|
+ | psd_URL; ?> | +psd_MobileScore; ?> | +psd_DesktopScore; ?> | +psd_Datetime)); ?> | ++ 查看页面 | Google insights + | +