Я рассматриваю использование php-ga ( https://packagist.org/packages/unitedprototype/php-ga ) для отправки простой аналитики в GA – в основном, захват, когда удаляется конечная точка API.
Я использую приведенный ниже код, и он работает хорошо, но GA рассматривает каждый конечный результат (проверенный путем обновления тестовой страницы) в качестве уникального посетителя. Кто-нибудь видел это раньше? API знает, «кто» связывается с ним, благодаря аутентификации.
Может ли кто-нибудь показать мне, как сказать GA, что каждое обновление – это фактически сеанс пользователя, а не новый визит?
use UnitedPrototype\GoogleAnalytics; $ga = new GoogleAnalytics\Tracker('UA-12345678-1', 'mysite.com'); $visitor = new GoogleAnalytics\Visitor(); $visitor->setIpAddress($_SERVER['REMOTE_ADDR']); $visitor->setUserAgent($_SERVER['HTTP_USER_AGENT']); $session = new GoogleAnalytics\Session(); // Assemble Page information $page = new GoogleAnalytics\Page('/api/v1/test-ga-thingy'); $page->setTitle('Testing the API Thingy'); // Track page view $ga->trackPageview($page, $session, $visitor);
У меня была та же проблема. Чтобы решить эту проблему, вам нужно заставить PHP проверить, установлен ли файл cookie analytics, если он тогда не должен создавать новый, если это не так. Откройте файл GoogleAnalytics/Session.php
и перейдите к строке 72
. Там вы найдете этот код:
public function __construct() { $this->setSessionId($this->generateSessionId()); $this->setTrackCount(0); $this->setStartTime(new DateTime()); }
Когда вы создадите новый экземпляр сеанса, он будет проходить через эти строки. Но здесь он дает каждому экземпляру вновь созданный sessionid, дает ему новый trackcount и новый сгенерированный startTime. Ну, это не то, что мы хотим, поэтому вам нужно будет изменить его, чтобы увидеть, есть ли все уже какие-либо файлы cookie из Google Analytics, и если они есть, они должны использовать их. Измените эти строки следующим образом:
public function __construct() { if(!isset($_COOKIE['__utmb'])){ $this->setSessionId($this->generateSessionId()); $this->setTrackCount(0); $this->setStartTime(new DateTime()); }else{ $this->setSessionId(_COOKIE['__utmc']); $this->fromUtmb($_COOKIE['__utmb']); } }
Это решает одну проблему, но theres другой, каждый раз, когда вы создаете новый экземпляр класса «Посетитель», проблема та же. Откройте файл GoogleAnalytics/Visitor.php
и перейдите к строке 150
. Там вы найдете этот код:
public function __construct() { // ga.js sets all three timestamps to now for new visitors, so we do the same $now = new DateTime(); $this->setFirstVisitTime($now); $this->setPreviousVisitTime($now); $this->setCurrentVisitTime($now); $this->setVisitCount(1); }
Вам нужно будет изменить его на:
public function __construct() { // ga.js sets all three timestamps to now for new visitors, so we do the same if(isset($_COOKIE['__utma'])){ $this->fromUtma($_COOKIE['__utma']); }else{ $now = new DateTime(); $this->setFirstVisitTime($now); $this->setPreviousVisitTime($now); $this->setCurrentVisitTime($now); $this->setVisitCount(1); } }