teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

$ge->fetchの説明のコメント追加

2018/06/28 00:46

投稿

threeaster
threeaster

スコア14

title CHANGED
File without changes
body CHANGED
@@ -21,7 +21,7 @@
21
21
  $totalResults = 1000000; // 仮のtotalResults
22
22
  $page_views = [];
23
23
  for($i = 1; $i < $totalResults; $i+= 10000) {
24
- $results = $ga->fetch('2017-01-01', date('Y-m-d'), 'ga:pageviews', ['dimensions' => 'ga:pagePath', 'filters' => 'ga:pagePath=@article', 'sort' => '-ga:pageviews', 'start-index'=>$i, 'max-results' => $request_num]);
24
+ $results = $ga->fetch('2017-01-01', date('Y-m-d'), 'ga:pageviews', ['dimensions' => 'ga:pagePath', 'filters' => 'ga:pagePath=@article', 'sort' => '-ga:pageviews', 'start-index'=>$i, 'max-results' => $request_num]); //google analyticsから2017-01-01から今日までで、articleをurlに含むview数の情報を、view数が大きい方から数えて、$i番目から$request_num件取得する
25
25
  $totalResults = $results->totalResults;
26
26
  foreach($results->rows as $row){
27
27
  //$rowは[url, view数]という配列になっている

2

自分の環境のurlが出ていたのを修正

2018/06/28 00:46

投稿

threeaster
threeaster

スコア14

title CHANGED
File without changes
body CHANGED
@@ -25,7 +25,7 @@
25
25
  $totalResults = $results->totalResults;
26
26
  foreach($results->rows as $row){
27
27
  //$rowは[url, view数]という配列になっている
28
- $name = get_name($row[0]); // get_nameは例えば$row[0]がhttp://woman.mynavi.local/article/170101/のとき、170101を取得する。実際にはurlのフォーマットが違う場合や、ページネーションを無視したりなどがあり、いろいろやっている。
28
+ $name = get_name($row[0]); // get_nameは例えば$row[0]がhttp://sample.com/article/170101/のとき、170101を取得する。実際にはurlのフォーマットが違う場合や、ページネーションを無視したりなどがあり、いろいろやっている。
29
29
  $query = new WP_Query(["name" => $name]);
30
30
  $post_id = $query->post->ID;
31
31
  if($page_views[$post_id]){

1

やっている処理を追加

2018/06/28 00:39

投稿

threeaster
threeaster

スコア14

title CHANGED
File without changes
body CHANGED
@@ -10,4 +10,30 @@
10
10
  }
11
11
 
12
12
  ```
13
- 思い切り単純化すると、上のコードで、出力されるメモリ量がどんどん増えていってしまいます。
13
+ 思い切り単純化すると、上のコードで、出力されるメモリ量がどんどん増えていってしまいます。
14
+
15
+ (6/28追記)
16
+ これでやっている処理は以下のようになります。
17
+ ```
18
+ require_once( __DIR__.'/../DocumentRoot/wp-load.php' );
19
+ // ここにgoogle analytics用のLoaderをincludeするinclude文が入る
20
+ $ga = \Loader::get_analytics();
21
+ $totalResults = 1000000; // 仮のtotalResults
22
+ $page_views = [];
23
+ for($i = 1; $i < $totalResults; $i+= 10000) {
24
+ $results = $ga->fetch('2017-01-01', date('Y-m-d'), 'ga:pageviews', ['dimensions' => 'ga:pagePath', 'filters' => 'ga:pagePath=@article', 'sort' => '-ga:pageviews', 'start-index'=>$i, 'max-results' => $request_num]);
25
+ $totalResults = $results->totalResults;
26
+ foreach($results->rows as $row){
27
+ //$rowは[url, view数]という配列になっている
28
+ $name = get_name($row[0]); // get_nameは例えば$row[0]がhttp://woman.mynavi.local/article/170101/のとき、170101を取得する。実際にはurlのフォーマットが違う場合や、ページネーションを無視したりなどがあり、いろいろやっている。
29
+ $query = new WP_Query(["name" => $name]);
30
+ $post_id = $query->post->ID;
31
+ if($page_views[$post_id]){
32
+ $page_views[$post_id] += $row[1];
33
+ }else {
34
+ $page_views[$post_id] = (int)$row[1];
35
+ }
36
+ }
37
+ }
38
+ var_dump($page_views); // まだ未実装だが最終的にはこれをdbに保存する
39
+ ```