mixpanel/mixpanel-php

Mixpanel 官方 PHP 库

2.11.0 2023-04-11 23:03 UTC

README

此库提供 API 以跟踪事件并在 Mixpanel 上更新配置文件。

使用 Composer 安装

将 mixpanel/mixpanel-php 添加为依赖项,并运行 composer update

"require": {
    ...
    "mixpanel/mixpanel-php" : "2.*"
    ...
}

现在您可以开始跟踪事件和人员

<?php
// import dependencies
require 'vendor/autoload.php';

// get the Mixpanel class instance, replace with your project token
$mp = Mixpanel::getInstance("MIXPANEL_PROJECT_TOKEN");

// track an event
$mp->track("button clicked", array("label" => "sign-up")); 

// create/update a profile for user id 12345
$mp->people->set(12345, array(
    '$first_name'       => "John",
    '$last_name'        => "Doe",
    '$email'            => "[email protected]",
    '$phone'            => "5555555555",
    "Favorite Color"    => "red"
));

手动安装

  1. 下载 Mixpanel PHP 库
  2. 将 zip 文件解压缩到项目根目录中名为 "mixpanel-php" 的目录
  3. 现在您可以开始跟踪事件和人员
<?php
// import Mixpanel
require 'mixpanel-php/lib/Mixpanel.php';

// get the Mixpanel class instance, replace with your project token
$mp = Mixpanel::getInstance("MIXPANEL_PROJECT_TOKEN");

// track an event
$mp->track("button clicked", array("label" => "sign-up"));

// create/update a profile for user id 12345
$mp->people->set(12345, array(
    '$first_name'       => "John",
    '$last_name'        => "Doe",
    '$email'            => "[email protected]",
    '$phone'            => "5555555555",
    "Favorite Color"    => "red"
));

生产注意事项

默认情况下,数据通过 cURL 使用 ssl 发送。当您跟踪少量事件或不在乎 PHP cURL 调用的潜在阻塞特性时,这效果很好。然而,当您发送数百个事件时(例如在批处理中),这并不高效。我们的库提供了一个简单的方法来使用持久套接字连接以实现更高效的写入。要启用持久套接字,只需在实例化 Mixpanel 类时将 'consumer' => 'socket' 作为 $options 数组中的一个条目传递。此外,您可以通过创建自定义 Consumer 来贡献您自己的持久化实现。

测试

mixpanel-php 使用 phpunit 作为测试框架。请确保 composer 已更新。要运行测试,请在根目录中执行 composer run-script unit-tests

文档

有关更多示例和选项,请查看 "examples" 文件夹

变更日志

版本 2.11.0

  • 修复了 $anon_id 的正则表达式
  • 修复了 PHP 8.2 弃用警告

版本 2.10.0

  • 发送毫秒级精度的时标

版本 2.9.0

  • 更新了 $anon_id 检查的正则表达式
  • 支持组分析
  • 修复了 PHP 8.1 弃用警告
  • PHP 7.4 兼容性

版本 2.8.1

  • 更新了 identify 方法中的 $anon_id 正则表达式以支持所有 Mixpanel 独特 ID

版本 2.8.0

  • 向 identify 方法添加了 $anon_id 参数,并在参数存在且为 UUID v4 格式时调用 track 调用
  • 将 createAlias 方法的参数名称更改为 $distinct_id 和 $alias
  • 防止在非分支 CurlConsumer 上调用不必要的 _encode
  • 确保在访问之前 'Connection' 存在

版本 2.7.0

版本 2.6.2

  • 添加了对 $ignore_time 的支持
  • 清理了一些注释以使其更清晰

版本 2.6.1

  • 修复了 SocketConsumer 超时中的错误

版本 2.6

  • 将 SocketConsumer 中的 connect_timeout 的默认值更新为 5

版本 2.5

  • timeout 选项现在指的是 CURLOPT_TIMEOUT 而不是 CURLOPT_CONNECTTIMEOUT 在非分支 cURL 调用中,它已从 SocketConsumer 中删除,转而使用新的 connect_timeout 选项。
  • 为非分叉的cURL调用(CurlConsumer)和套接字超时(SocketConsumer)添加了新的connect_timeout选项。
  • 将非分叉的cURL调用中的默认超时时间(CURLOPT_TIMEOUT)设置为30秒。
  • 将非分叉的cURL调用中的默认连接超时时间(CURLOPT_CONNECTTIMEOUT)设置为5秒。
  • 现在将非分叉的cURL调用中的cURL错误传递给_handle_error,并带有curl errno和消息。

版本2.4

  • 修复了一个问题,即传递整数0作为ip参数时会被忽略。

版本2.1 - 2.3

  • 损坏的发布版本

版本2.0

  • 将默认消费者更改为'curl'(CurlConsumer)。
  • 在Curl Consumer中将默认的'fork'设置更改为false。这意味着默认情况下,使用Curl Consumer时,事件和配置文件更新是同步通过PHP cURL库发送的。
  • 'createAlias'使用CurlConsumer,并显式将'fork'设置为false(因为我们需要它是同步的),而不是SocketConsumer。
  • 修复了一个问题,即max_queue_size从未被读取。