Я новичок в PHP, так что, может быть, кто-то может помочь исправить это? В моем веб-приложении отображается ошибка API Google PageInsights.
Вот код, я пытался изменить версию на / v2 /, но он все равно не работал.
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; }
<?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>'; ?>
Код, разделяемый Siren Brown, абсолютно корректен, за исключением того, что при получении баллов нам нужно отправить параметр query & strategy = mobile или & strategy = desktop, чтобы получить соответствующие результаты от 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';