chappy84/google-analytics-server-side

此包已被弃用且不再维护。未建议替代包。

Google Analytics 服务器端

v0.14.5-beta 2023-07-03 01:18 UTC

README

归档仓库

这是一个已归档的项目,仅为了历史记录。它不再受到支持或更新,应被视为已结束生命周期。
如果您希望继续自己开发此代码,我们建议您将其进行分支。

该项目是从 ga.js 通用分析代码逆向工程而来,该代码已被Google 标记为“已结束生命周期”。此包将无法与最新版本的 Google Analytics(截至写作时的 GA4)一起工作。
我们建议您遵循 Google 的建议,并迁移到 GA4,在此之后,您可以使用Google Analytics 4 测量协议从服务器端记录分析数据。
存在各种现有的 PHP 实现此协议,我们不会推荐任何一个。如果您需要切换,请进行调研,并选择一个良好的实现,或者大胆创建一个新的实现。

关于

Google Analytics 服务器端是 Google Analytics 网页跟踪 ECMAScriptPHP 中的实现。
它提供了一个小巧、易于使用的 PHP 5.3+ 包,用于服务器端 Google Analytics 跟踪。
实现了接口的部分,这些部分在没有 ECMAScript 浏览器的情况下也能使用,以检测某些功能,例如屏幕分辨率/颜色、Flash/Java 插件版本等。

CODE: git clone git://github.com/chappy84/google-analytics-server-side.git
HOME: http://github.com/chappy84/google-analytics-server-side
BUGS: http://github.com/chappy84/google-analytics-server-side/issues

Google Analytics 由 Google 开发。
此 PHP 适配版本由 Tom Chapman 维护。

Build Status Master Code Coverage Status SensioLabsInsight Latest Stable Version Total Downloads License

安装

从 v0.8.6-beta 开始,可以使用 composerpackagist 仓库安装此包。只需要求 chappy84/google-analytics-server-side,它将被安装,并检查需求。

或者,如果您不想使用 composer,可以使用以下方法包含此包(不包含测试):

require_once '<base_dir>' . DIRECTORY_SEPARATOR . 'Gass' . DIRECTORY_SEPARATOR . 'Bootstrap.php';

其中 <base_dir> 是您文件系统中 Google Analytics 服务器端的基目录。

使用方法

Google Analytics 服务器端可以简单地按以下方式使用:

$gass = new \Gass\GoogleAnalyticsServerSide;
$gass->setAccount('UA-XXXXXXX-X')
    ->trackPageView();

类构造函数接受一个可选的关联数组参数,其中包含可用的配置选项。基本上,如果有一个公共方法来设置变量,那么它就可以作为数组的一部分传递给类。

例如:

$gass = new \Gass\GoogleAnalyticsServerSide;
$gass->setAccount('UA-XXXXXXX-X')
    ->setBotInfo(true);

也可以这样做

$gass = new \Gass\GoogleAnalyticsServerSide(
    array(
        'account' => 'UA-XXXXXXX-X',
        'botInfo' => true
    )
);

这些选项也可以通过setOption方法单独设置,或者通过setOptions方法一次性设置。

大多数在ga.js跟踪代码中可用的当前基本方法都已被实现。
实现的方法包括

  • deleteCustomVar
  • getAccount
  • getVersion
  • getVisitorCustomVar
  • setAccount
  • setCustomVar
  • setSessionCookieTimeout
  • setVisitorCookieTimeout
  • trackPageview

尚未实现的方法包括

  • getName
  • setSampleRate
  • setSiteSpeedSampleRate

还有额外的方法可用于从浏览器中的javascript或http请求对象预先确定的信息。用户代理、服务器名称、远程地址、文档路径、文档来源、Google Analytics版本、接受的语言、Cookies和搜索引擎都自动设置,无需开发者调用任何方法。但是,以下方法可用于设置这些变量,应在调用trackPageView / trackEvent方法之前调用,以保存跟踪信息

  • setVersion
  • setAcceptLanguage
  • setUserAgent
  • setServerName
  • setRemoteAddress
  • setDocumentPath
  • setDocumentReferer
  • setCookies

除此之外,还有用于修改页面标题和文档字符集默认值的方法。这些方法通过以下方法提供

  • setPageTitle
  • setCharset

还提供了上述所有方法的获取方法。
除了get方法之外的所有方法都允许链式调用,以便于使用。

事件跟踪

事件跟踪是通过使用与ga.js跟踪代码相同的功能实现的

\Gass\GoogleAnalyticsServerSide::trackEvent(
     string $category, 
     string $action, 
    [string $label = null, 
    [int    $value = null, 
    [bool   $nonInteraction = false]]] 
);

注意:trackEvent()不需要先调用trackPageView()
但是,如果您没有先调用trackPageView或设置nonInteractiontrue,则您的页面/访问指标可能小于1。

BotInfo

您必须启用BotInfo,才能忽略任何搜索/爬虫机器人。
为此,您需要将一个true值、一个关联数组或您要使用的适配器的实例传递给类。默认情况下,代码将使用BrowsCap适配器。将其设置为true将使用默认值。如果您传递一个关联数组,它将被传递给BotInfo并通过适配器。当提供关联数组时,您还可以传递元素'adapter',这将告诉BotInfo使用哪个类作为适配器。您还可以传递一个Gass\BotInfo\BotInfoInterface适配器的实例,该实例将被Gass\BotInfo类使用。

适配器

GASS包中有两个适配器可用

BrowsCap

数组配置参数中包含五个选项

  • \Gass\BotInfo\BrowsCap::OPT_SAVE_PATH:存储ini文件和最新版本文件的路径。
  • \Gass\BotInfo\BrowsCap::OPT_INI_FILE:存储browscap ini数据的ini文件的名称。
  • \Gass\BotInfo\BrowsCap::OPT_LATEST_VERSION_DATE_FILE:存储最新版本时间戳的文本文件名称。
  • \Gass\BotInfo\BrowsCap::OPT_BROWSCAP:与php ini设置 browscap 相同,这是一个文件系统位置,其中存储着 full_php_browscap.ini文件,可以在此位置下载。
  • \Gass\BotInfo\BrowsCap::OPT_DISABLE_AUTO_UPDATE:此选项禁用了browscap.ini文件的自动更新功能。有关更多信息,请参阅下面的更新部分。

注意:如果已设置OPT_SAVE_PATHOPT_INI_FILE,则将忽略OPT_BROWSCAPOPT_SAVE_PATHOPT_INI_FILE也将覆盖从OPT_BROWSCAP派生的任何值。这是因为OPT_BROWSCAP旨在作为browscap ini设置的备用方案,并与该包先前版本向后兼容。

例如:

$gass = new \Gass\GoogleAnalyticsServerSide(
    array(
        'botInfo' => true,
        'account' => 'UA-XXXXXXX-X',
    )
);

$gass = new \Gass\GoogleAnalyticsServerSide(
    array(
        'botInfo' => array(
            'adapter' => 'BrowsCap',
            \Gass\BotInfo\BrowsCap::OPT_SAVE_PATH => '/var/lib/browscap',
            \Gass\BotInfo\BrowsCap::OPT_INI_FILE => 'full_php_browscap.ini',
        ),
        'account' => 'UA-XXXXXXX-X'
    )
);

$gass = new \Gass\GoogleAnalyticsServerSide(array('account' => 'UA-XXXXXXX-X'));
$browsCapAdapter = new \Gass\BotInfo\BrowsCap;
$gass->setBotInfo($browsCapAdapter);
更新ini文件

当browscap ini文件的更新在服务器上可用时,代码将自动将文件下载到提供的位置。
可以通过将\Gass\BotInfo\BrowsCap::OPT_DISABLE_AUTO_UPDATE配置选项设置为true来禁用此功能。

禁用后,此包提供另一种方法,允许您自动更新ini文件。
脚本bin/gass-browscap-updater可以设置通过计划程序运行。这使用与自动更新功能相同的代码,检查缓存文件以及browscap.org上存储的最新更新日期,如果有新版本,则下载新版本。

此脚本有以下命令行选项

  • -s / --save-path 保存ini文件和最新更新缓存文件的路径
  • -f / --ini-filename 下载的browscap文件的文件名
  • -c / --cache-filename:最新版本日期缓存文件的文件名
  • -v / --version:输出当前版本
  • -h / --help:显示帮助信息

有关使用说明的更多信息,请参阅脚本提供的帮助信息。

注意
  • 您必须提供browscap ini文件的存储位置信息,或者将browscap ini设置在php.ini中,否则此适配器将无法工作。
  • 由于browscap ini文件仅在PHP启动时加载(这是与Web服务器apache、PHP-FPM等一起加载的),因此代码直接处理ini文件,而不是使用内置的get_browser函数。这确保了自动更新功能可以在不重新启动Web服务器的情况下工作。

UserAgentStringInfo

已弃用 - 在udger.com(或相当的服务)实现csv(或另一个数据源)以替换用户代理字符串信息csv之前,由于user-agent-string.info现已关闭

此选项从user-agent-string.info下载了搜索引擎爬虫的csv列表。
数组配置参数有三个选项

  • \Gass\BotInfo\UserAgentStringInfo::OPT_CACHE_PATH:保存从user-agent-string.info下载的爬虫列表的位置(必需)
  • \Gass\BotInfo\UserAgentStringInfo::OPT_CACHE_FILENAME:保存爬虫列表的文件名(可选,默认为bots.csv)
  • \Gass\BotInfo\UserAgentStringInfo::OPT_CACHE_LIFETIME:缓存失效前的秒数(可选,默认为2592000(30天))

这可以像 BrowsCap 适配器一样实现。

Http

这是一个单例类,它为 GASS 包的所有部分提供 http 功能。
如果 php curl 扩展可用,则默认使用 Curl 适配器,否则将回退到 Stream 适配器。它不需要任何选项。所有选项都应作为配置选项传递给 GoogleAnalyticsServerSide,可以通过 'http' 元素中的配置参数或通过 setHttp 方法的参数进行。这可以是关联数组或所需适配器的实例。

例如:

$gass = new \Gass\GoogleAnalyticsServerSide(
    array(
        'account' => 'UA-XXXXXXX-X',
        'http' => array(
            'adapter' => 'Curl',
            CURLOPT_PROXY => 'http://exampleproxy.local:8080'
        )
    )
);

$gass = new \Gass\GoogleAnalyticsServerSide(array('account' => 'UA-XXXXXXX-X'));
$httpAdapter = new \Gass\Http\Stream;
$gass->setHttp($httpAdapter);

适配器

Gass\Http 中有两个适配器可用,这些是

Stream

Stream 创建一个流上下文,并使用 file_get_contents 利用此流。请参阅 PHP 的示例。提供给此类任何可用的选项将进入流上下文的 'http' 数组,因此您可以将任何标题或代理信息等传递到其中以在连接时使用。

Curl

这利用了 php 扩展 cURL。cURL 建议使用,但是因为它并不总是可用,代码回退到 stream 以允许所有服务器以正确的方式发出 http 请求。
提供给此类的任何选项都必须使用 cURL 常量 作为标识符(关联数组键或选项名称)进行传递。

终端用户位置

如果使用 Google 提供的格式为 UA-XXXXXXX-X 的 GA 账号,终端用户的位置将被报告为服务器的位置。如果您将其更改为 MO-XXXXXXX-X 格式,则位置将被正确跟踪并显示在位置地图上,就像正常的 ECMAScript 跟踪一样。

Cookies

当调用 trackPageViewtrackEvent 时,cookies 将自动设置。
但是,它们只作为标题一次发送到浏览器,因此如果您多次调用任一函数,或者调用两个函数,则它们仅在第一次调用时包含在标题中。

您可以选择关闭将 cookie 标题发送到浏览器的操作,这可以通过在第一次调用 trackPageView / trackEvent 之前调用 disableCookieHeaders 来完成。

测试套件 & CI

此包使用 PHPUnit,结合 TravisCI,在支持的 PHP 次版本 5.3、5.4、5.5、5.6、7.0 和 7.1 上测试功能,对 7.2、7.3 和 7.4 提供非官方支持。这是在次版本的最新修复点发布上默认执行的,以确保其工作。

如果您正在提交拉取请求,请确保您已使用通过composer安装的PHPUnit运行测试套件。请参阅此处的说明,了解如何安装它。之后,您可以使用composer install安装phpunit以及其他所需的开发依赖项。

PHP版本

最低支持的版本是PHP 5.3.23

不受支持的PHP版本

我已经保留了以下与现在不受支持的PHP版本兼容的版本分支

请自由使用、分支等这些分支。对于它们中出现的任何问题,恐怕我不会尝试修复。但是,如果您自己尝试了修复,请提交拉取请求,我会考虑。

许可证

本软件使用BSD 3-Clause许可证

版权所有 (c) 2011-2020, Tom Chapman (http://tom-chapman.uk) 保留所有权利。

在满足以下条件的情况下,允许重新分发和使用源代码和二进制形式,无论是否修改:

  1. 源代码的重新分发必须保留上述版权声明、本条件列表和以下免责声明。

  2. 二进制形式的重新分发必须在文档中或随分发提供的其他材料中重新生产上述版权声明、本条件列表和以下免责声明。

  3. 未经版权所有者或其贡献者事先书面许可,不得使用版权所有者的名称或其贡献者的名称来认可或推广由此软件衍生出的产品。

本软件由版权所有者和贡献者提供“现状”和任何明示或暗示的保证,包括但不限于对适销性和针对特定目的的适用性的暗示保证。在任何情况下,版权所有者或贡献者不应对任何直接、间接、偶然、特殊、示范性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,无论此类损害是否因使用本软件引起,即使已告知此类损害的可能性。

注意:此代码既不是由Google编写也不是由其员工认可的。
"Google"和"Google Analytics"是Google Inc.及其子公司注册的商标。