Как сделать ежедневный cron для обновления просмотров тысяч страниц из Google Analytics

Я хотел бы знать, как лучше всего выполнять ежедневный cron для обновления просмотров страниц каждой страницы веб-сайта без превышения ограничений API. На сайте тысячи уникальных страниц.

Я использую PHP и API Google Analytics и выполняю цикл для всех пользователей и обновляю просмотры страниц, но этот способ слишком медленный и превысит лимит дневной котировки.

Несколько советов по его улучшению?

$analytics = initializeAnalytics();
$profile = getFirstProfileId($analytics);

$update = $db->prepare('UPDATE users SET user_views=? WHERE user_id=?');
foreach($db->query('SELECT * FROM user') as $user){
    $result = $analytics->data_ga->get('ga:' . $profile, '2016-01-01', 'today', 'ga:pageViews', array('filters' => 'ga:pagePath=@/' . $user['user_subdomain']));

    $views = $result[0][0] > 0 ? $result[0][0] : 0;
    $update->execute(array($views, $user['user_id']));
}

comment
Изучите реализацию протокола измерений, который поддерживает ограниченные пакетные запросы. См. эту ссылку. Если ваши требования превышают ограничения пакета, вы можете рассмотреть возможность реализации какой-либо локальной системы очередей, которая будет постепенно отправлять фрагменты очереди в GA.   -  person Ro Achterberg    schedule 01.12.2018
comment
Можете ли вы привести пример для его реализации?   -  person NAG    schedule 01.12.2018
comment
Нет, я думаю, тебе придется сначала попробовать самому. Если вы не можете заставить его работать, то я с удовольствием дам вам несколько советов.   -  person Ro Achterberg    schedule 01.12.2018
comment
Не знаю с чего начать, документация GA перепутана... Если подскажете с чего начать буду признателен.   -  person NAG    schedule 01.12.2018
comment
Протокол измерения не работает для доступа к данным отчетов, он используется для заполнения данных аналитики. На самом деле Analytics сообщает о данных, полученных в конечной точке протокола Measurement.   -  person Дмитро Булах    schedule 02.12.2018


Ответы (1)


вы можете не разбивать свой запрос на фильтр пути к странице пользователя, но использовать один запрос для получения всех просмотров страниц для всех путей к страницам. v4 API отчетов позволяет получать до 100 000 строк за один ответ. Таким образом, у вас может быть один запрос на получение просмотров страниц по пути к странице, а затем циклический просмотр объекта ответа, чтобы найти строку, содержащую данные для отдельного пользователя.

person Дмитро Булах    schedule 02.12.2018
comment
Спасибо, я сделаю это и после того, как я помещу здесь. - person NAG; 02.12.2018