Google PageSpeed Insights API not working [PHP]

痞子三分冷 提交于 2019-12-02 19:39:42

问题


I'm a beginner in PHP, so maybe someone could help to fix this ? My web application is showing Google PageInsights API error..

Here's the code, I tried to change version to /v2/, but it still didn't work..

public function getPageSpeed($domain, $api = "")
        {
            try
            {
                $callback_url = "https://www.googleapis.com/pagespeedonline/v1/runPagespeed?";
                $data = array(
                    'url'       => 'http://' . $domain,
                    'key'       => (empty($api) ? $_SESSION['GOOGLEAPI_SERVERKEY'] : $api),
                    'fields'    => 'score,pageStats(htmlResponseBytes,textResponseBytes,cssResponseBytes,imageResponseBytes,javascriptResponseBytes,flashResponseBytes,otherResponseBytes)'
                );

                $curl_response = $this->curl->get($callback_url . http_build_query($data, '', '&'));

                if ($curl_response->headers['Status-Code'] == "200") {

                    $content = json_decode($curl_response, true);
                    $response = array(
                        'status' => 'success',
                        'data' => array(
                            'pagespeed_score' => (int)$content['score'],
                            'pagespeed_stats' => $content['pageStats']
                        )
                    );

                } else {

                    $response = array(
                        'status' => 'error',
                        'msg' => 'Google API Error. HTTP Code: ' . $curl_response->headers['Status-Code']
                    );

                }
            }
            catch (Exception $e)
            {
                $response = array(
                    'status' => 'error',
                    'msg' => $e->getMessage()
                );
            }
            return $response;
        }

回答1:


<?php   

  function checkPageSpeed($url){    
    if (function_exists('file_get_contents')) {    
    $result = @file_get_contents($url);
  }    
  if ($result == '') {    
  $ch = curl_init();    
  $timeout = 60;    
  curl_setopt($ch, CURLOPT_URL, $url);    
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);   
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);  
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);  
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);  
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);    
  $result = curl_exec($ch);    
  curl_close($ch);    
 }    

 return $result;    
}  

$myKEY = "your_key";  
$url = "http://kingsquote.com";  
$url_req = 'https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url='.$url.'&screenshot=true&key='.$myKEY;  
$results = checkPageSpeed($url_req);  
echo '<pre>';  
print_r(json_decode($results,true));   
echo '</pre>'; 
?>



回答2:


The code shared by Siren Brown is absolutely correct, except that while getting the scores we need to send the query parameter &strategy=mobile or &strategy=desktop to get the respective results from Page speed API

   $url_mobile = 'https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url='.$url.'&screenshot=true&key='.$myKEY.'&strategy=mobile';
   $url_desktop = 'https://www.googleapis.com/pagespeedonline/v1/runPagespeed?url='.$url.'&screenshot=true&key='.$myKEY.'&strategy=desktop';  


来源:https://stackoverflow.com/questions/28076882/google-pagespeed-insights-api-not-working-php

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!