curl을 이용해 복수의 URL을 해석【PageSpeed Insights(페이지 스피드 인사이트)】
7005 단어 PageSpeedInsightscurl
그 중에서도 Google과 같은 검색엔진은 휴대기기에서의 속도를 중시하고 있습니다. 이유로 모바일 단말은 PC 단말에 비해 회선 속도가 느려질 수 있기 때문입니다.
예를 들면, 마을의 중심부라면 4G나 LTE를 사용할 수 있는데 마을 밖으로 가면 3G밖에 사용할 수 없는 느낌입니다.
그러한 경위도 있어, Google이 제공하는 PageSpeed Insights(페이지 속도 통계) 를 사용하고 있는 분은 많을까 생각합니다.
이런 식으로 데스크톱(PC)과 모바일에서의 페이지 속도가 100점 만점으로 표시됩니다.

점수를 함께 얻고 싶습니다.
그러나 PageSpeedInsights에서는 기본적으로 1개의 URL에 대해 스코어가 표시되는 형태로, 복수의 URL에는 대응하고 있지 않습니다.
뭐 확실히, 뉴스계의 사이트이면,
의 3 패턴의 속도를 체크하면 거의 사이트는 망라할 수 있습니다.
하지만,
라고 할 때, URL의 수가 10개나 20개가 되면 1개 1개 취득하는 것은 매우 귀찮습니다.
그래서 이번에는 API를 이용하여 정리해 취득하는 방법을 소개합니다.
API를 사용하여 일괄 얻는 방법
1. PageSpeed Insights API의 API 키 발급
Google Cloud Platform에 로그인하여 API 키를 발행합니다.

그 2. 해석하고 싶은 URL을 「url.txt」등으로서 작성해 둔다.
url.txt
http://www.yahoo.co.jp/
https://www.google.co.jp/
https://www.amazon.co.jp/
http://www.rakuten.co.jp/
http://ameblo.jp/
http://zozo.jp/
3. PHP 스크립트를 만들고 API 키를 넣습니다.
mobile.php
<?php
// APIキー
$key = "Your API KEY";
// mobile or desktop
$strategy = "mobile";
// URLリスト読み込み
$lines = file('url.txt', FILE_IGNORE_NEW_LINES);
// URLの分だけAPIリクエストして解析
foreach ($lines as $url) {
$api = "https://www.googleapis.com/pagespeedonline/v2/runPagespeed?url=".$url."&strategy=".$strategy."&key=".$key;
$ch = curl_init(); // 1. curl 初期化
curl_setopt( $ch, CURLOPT_URL, $api ); // 2. curl オプションを設定
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$json = curl_exec($ch); // 3. curl 実行してデータを得る
curl_close($ch); // 4. curl 終了
$data = json_decode($json);
if ($data->responseCode == 200) {
$score = $data->ruleGroups->SPEED->score;
} else {
$score = "error";
}
echo $url.",".$score."\n";
}
4. 터미널에서 실행한다.
$ php mobile.php
http://www.yahoo.co.jp/,61
https://www.google.co.jp/,100
https://www.amazon.co.jp/,62
http://www.rakuten.co.jp/,75
http://ameblo.jp/,56
http://zozo.jp/,49
개인적으로는 amazon, 라쿠텐이 그만큼의 정보량에도 불구하고, 60점 이상이라고 하는 것은, 매우 높은 것일까라고 생각합니다.
그리고 google의 톱 페이지는 검색 창뿐이므로, 역시 100 점이군요 웃음
참고 사이트에 대해서
이 기사를 투고하기 전까지는 @ ko31 님의 기사 그대로 사용해 주셨습니다만, 어느 때부터,
Warning: file_get_contents(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
라고 표시되어 file_get_contents에 있어서 에러가 발생해 버려 사용할 수 없게 되어 버렸으므로, file_get_contents의 대체에 cURL를 사용한다고 하는 방법으로 코드를 재작성한 것이 이번이 됩니다.
그래서, 베이스의 코드인 @ko31씨와 cURL 기사 를 참고하게 했다.
마지막으로
위의 에러문에 대해서, 어떻게든 터미널상에서 file_get_contents를 이용할 수 없는지, 시행착오해 보았습니다만, 할 수 없었으므로, 또 시간이 있을 때에 생각해 보겠습니다.
그래도 문제 해결이 좋았습니다.
Reference
이 문제에 관하여(curl을 이용해 복수의 URL을 해석【PageSpeed Insights(페이지 스피드 인사이트)】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/i3mato/items/61cd688e6c1180aa1068텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)