目录
此内容是否有帮助?

# PHP SDK 使用ガイド

TIP

アクセスする前に、アクセス前アクセス前準備

GitHub でGitHub (opens new window)PHP SDK ソースを取得できます。

最新バージョン: 1.1.080.0

更新時間は: 2021-11-099

# 1. SDK のインストール

  • からGitHub (opens new window)SDK のソースコードを取得し、プロジェクトに統合できます。プロジェクトがあるディレクトリに TaPhpSdk.php 置くだけです。この SDK は PHP>5.5 と互換性があり、一部の機能は curl 拡張に依存しています。
  • composer 統合を使用することもできます
{
    "require": {
        "thinkinggame/ta-php-sdk": "v1.8.0"
    }
}

# II。SDK の初期化

プログラムに次のコードを記述して SDK を導入します

<?php
require "TaPhpSdk.php";
?>

SDK を導入した後は、SDK インスタンス

//初始化SDK两种方式,Consumer包括下列(FileConsumer,BatchConsumer,DebugConsumer
//(1)默认
$ta = ThinkingDataAnalytics(Consumer);
//(2)添加UUID去重
$enableUUID = true;
$ta = new ThinkingDataAnalytics(Consumer,$enableUUID);

3 つの異なる SDK インスタンスを取得できますFileConsumer:

**(1)FileConsumer:**一括リアルタイムでローカルテキストを書くには、LogBus と組み合わせてデータアップロードを行う必要があり、使用を提案、マルチスレッドをサポートしていない、インスタンスを生成するときにテキストカットルールを調整できる。

TA を初期化:

<?php
//按默认按天切分文件
$ta = new ThinkingDataAnalytics(new FileConsumer("/log_dir"));
?>

テキストをサイズで分割する場合は、次のように初期化できます

<?php
//设置文件切割的大小,单位是MB,这里设置是1024MB,文件名类似:log.日期_数值(log.2020-01-03_0),数值是文件切分的索引
$ta = new ThinkingDataAnalytics(new FileConsumer("/log_dir", 1024));
?>

時間ごとにテキストを分割したい場合は、次のように初期化できます

<?php
//按小时切分,文件名类似:log.日期-小时_数值(log.2019-09-12-15_0)
$ta = new ThinkingDataAnalytics(new FileConsumer("/log_dir", 0, true));
?>

生成されたログブックプレフィックスを設定する必要がある場合は、次のように初期化できます

<?php
//按小时切分,文件名类似:a.log.日期-小时_数值(log.2019-09-12-15_0)
$ta = new ThinkingDataAnalytics(new FileConsumer("/log_dir", 0, true,"a"));
?>

最初の引数はローカルフォルダアドレスに書き込むことです。LogBus の Listen フォルダアドレスをここに設定するだけで、LogBus を使用してデータの Listen アップロードを実行できます。2 番目のパラメータはテキストの切断サイズで、デフォルトではサイズを制限せず、単位は MB です。3 番目のパラメータ設定が時間で区切られているかどうかは、デフォルトでは false、つまりオンではありません。

**(2)BatchConsumer:**一括リアルタイムで TA サーバにデータを転送するため、転送ツールを組み合わせる必要はなく、毎回の最大アップロードデータ量(デフォルト 20 件)とキャッシュ最大バッチ(デフォルト 50 件)を設定できます。つまり、デフォルトの最大キャッシュデータ量は 20*50 件です。長時間のネットワーク中断の場合、データ損失のリスクがある。

<?php
$ta = new ThinkingDataAnalytics(new BatchConsumer("SERVER_URI","APP_ID"));
?>

イントラネットでデータを転送する場合は、次のように初期化できます

<?php
$batchConsumer = new BatchConsumer("SERVER_URI","APP_ID")
//是否压缩,默认压缩gzip,如果是内网传输,推荐false
$batchConsumer -> setCompress(false);
$ta = new ThinkingDataAnalytics($batchConsumer);
?>

SERVER_URIは転送データの URL、APP_IDはプロジェクトの APP ID

クラウドサービスを使用している場合は、次の URL を入力してください

http://ta-receiver.thinkingdata.io

民営化された展開のバージョンを使用している場合は、次の URL を入力してください

http://数据采集地址

注意:バージョン 1.2.0 以前に次の URL を入力してください:

http://ta-receiver.thinkingdata.io/logagent
http://数据采集地址/logagent

**(3)DebugConsumer:**記事ごとにリアルタイムで TA サーバーにデータを転送し、転送ツールを組み合わせる必要はなく、データにエラーが発生した場合、データ全体が入庫されず、詳細なエラー説明が返され、本番環境での使用は推奨されず、マルチスレッドはサポートされません

<?php
$ta = new ThinkingDataAnalytics(new DebugConsumer("SERVER_URI","APP_ID"));
?>

したい場合DebugConsumerデータのみを検証したい場合は、次のように初期化できます

<?php
$debugConsumer = new DebugConsumer("SERVER_URI","APP_ID");
//debugConsumer是否写入TA库,true-写入,false-不写入。默认值为true
$debugConsumer->setDebugOnly(false);
$ta = new ThinkingDataAnalytics($debugConsumer);
?>

SERVER_URIは転送データの URL、APP_IDはプロジェクトの APP ID

クラウドサービスを使用している場合は、次の URL を入力してください

http://ta-receiver.thinkingdata.io

民営化された展開のバージョンを使用している場合は、次の URL を入力してください

http://数据采集地址

# 三、事件を送る

SDK の初期化が完了すると、trackイベントをアップロードすることができます。通常、ダースから数百の異なるイベントをアップロードする必要がある場合があります。

# 3.1 送信イベント

を呼び出してtrackイベントをアップロードすることができます。イベントの属性と情報を送信する条件を設定することをお勧めします。

<?php
//用户在登录状态下的账号ID
$account_id = "ABC12345";

//用户未登录时,可以使用产品自己生成的cookieId等唯一标识符来标注用户
$distinct_id = "SDIF21dEJWsI232IdSJ232d2332";

$properties = array();

//设置本条数据的时间,如不设置,则默认取当前时间,格式为"Y-m-d H:i:s"
$properties["#time"] = date("Y-m-d H:i:s",time());

//设置客户端IP,TA将会自动根据该IP地址解析其地理位置信息
$properties["#ip"] = "123.123.123.123";

//设置事件的其他属性
$properties["Product_Name"] ="商品名";
$properties["Price"] = 30;
$properties["OrderId"] ="abc_123";

//传入参数分别为,访客ID,账号ID,事件名与事件属性
try{
  $ta->track($distinct_id,$account_id,"Payment",$properties);
}catch (Exception $e){
   //异常处理
    echo $e;
}

//您可以只上传其中一个ID,SDK中其他需要上传用户ID的接口也可以只上传一个ID
//try{
//$ta->track(null,$account_id,"Payment",$properties);
//$ta->track($distinct_id,null,"Payment",$properties);
//}catch (Exception $e){
//异常处理
//echo $e;
}

?>

**注:**ビジター ID とアカウント ID がスムーズにバインドされることを保証するために、お客様の製品にビジター ID とアカウント ID が使用される場合は、この 2 つの ID を同時にアップロードすることを強くお勧めします。そうしないと、アカウントが一致しない状況が発生し、ユーザーが計算を繰り返すことになります。具体的な ID バインドルールはユーザー識別ルールの章を参考ユーザー識別ルール章を参考にしてください。

  • イベントの名前はアルファベットのみで始まり、数字、文字、下線の「_」を含めることができ、長さは最大 50 文字で、文字の大文字と小文字には敏感ではない。
  • イベントのプロパティは、各要素がプロパティを表す連想配列です。
  • 配列要素の Key 値は属性の名前で、string型で、文字で始まることができ、数字、文字、下線「_」を含み、長さは最大 50 文字で、文字の大文字と小文字には敏感ではない。
  • 配列要素の Value 値は、string,integer,integer,float,boolean,DataTime,array

# 3.2 パブリックイベントプロパティの設定

すべてのイベントに表示する必要があるプロパティプロパティの場合、register_public_propertiesを呼び出してパブリックイベントプロパティを設定できます。イベントを送信する前に、パブリックイベントプロパティを設定することをお勧めします。

<?php
$public_properties = array();
$public_properties["server_version"] ="1.2.3";
$public_properties["server_name"] = "A1001";
$ta->register_public_properties($public_properties);
?>

を呼び出してパブリックプロパティ設定した後、アップロードされたすべてのイベントにこれらのプロパティが

  • 共通イベント属性も連想配列で、各要素は属性を表します。
  • 配列要素の Key 値は属性の名前で、string型で、文字で始まることができ、数字、文字、下線「_」を含み、最大 50 文字で、文字の大文字と小文字には敏感ではない。
  • 配列要素の Value 値は、string,integer,integer,float,boolean,DataTime,array

を呼び出しregister_public_properties以前に設定した共通イベントプロパティを設定すると、以前のプロパティ値が、新しく設定した共通プロパティのいずれかで上書きされます。パブリックイベントプロパティとtrackuploadイベントのプロパティの Key が重複している場合、イベントのプロパティはパブリックイベントプロパティを上書きします。

すべてのパブリックイベントプロパティを空にする場合は、clear_public_properties を呼び出します

<?php
$ta->clear_public_properties();
?>

# 四、ユーザー属性

TA プラットフォームで現在サポートされているユーザープロパティ設定インターフェイスは user_set、user_setOnce、user_add、user_del です。

# 4.1 user_set

通常のユーザープロパティでは、user_set呼び出して設定できます。このインターフェイスを使用してアップロードされたプロパティは元のプロパティ値を上書きします。以前にユーザープロパティが存在しない場合は、新しいユーザープロパティを作成して書き込みます。プロパティのタイプは着信時のタイプと一致します

<?php
$properties = array();

//上传用户属性,新建属性"user_name",值为"ABC"
$properties["user_name"] = "ABC";
try{
  $ta->user_set($distinct_id,$account_id,$properties);
}catch (Exception $e){
   //异常处理
    echo $e;
}
//再次上传用户属性,此时"user_name"的值会被覆盖为"XYZ"
$properties["user_name"] = "XYZ";
try{
  $ta->user_set($distinct_id,$account_id,$properties);
}catch (Exception $e){
   //异常处理
    echo $e;
}
?>
  • user_set設定のユーザープロパティは、各要素がプロパティを表す連想配列です。
  • 配列要素の Key 値は属性の名前で、string型で、文字で始まることができ、数字、文字、下線「_」を含み、最大 50 文字で、文字の大文字と小文字には敏感ではない。
  • 配列要素の Value 値はこのプロパティの値で、サポートstringintegerfloatbooleanDataTimearray

# 4.2 user_set Once

アップロードするユーザープロパティが一度設定されている場合はuser_setOnceを呼び出して設定できます。

<?php
$properties = array();

//同样的,上传用户属性,新建属性"user_name",值为"ABC"
$properties["user_name"] = "ABC";
try{
  $ta->user_setOnce($distinct_id,$account_id,$properties);
}catch (Exception $e){
   //异常处理
    echo $e;
}

//再次上传用户属性,此时"user_name"已存在值,因此不进行修改,仍为"ABC";"user_age"的值为18
$properties["user_name"] = "XYZ";
$properties["user_age"] = 18;
try{
  $ta->user_setOnce($distinct_id,$account_id,$properties);
}catch (Exception $e){
   //异常处理
    echo $e;
}
?>

user_setOnce設定のユーザープロパティタイプと制限はuser_set一致します。

# 4.3 user_add

数値型のプロパティをアップロードするときは、user_add を呼び出しuser_add、プロパティを累積操作することができます。プロパティが設定されていない場合は、0 を割り当ててから計算します。負の値が渡され、減算操作に相当します。

<?php

//上传用户属性,此时"total_revenue"的值为30,"vip_level"的值为1
$properties = array();
$properties["total_revenue"] = 30;
$properties["vip_level"] = 1;
try{
  $ta->user_add($distinct_id,$account_id,$properties);
}catch (Exception $e){
   //异常处理
    echo $e;
}

//再次上传用户属性,此时"total_revenue"的值为90,"vip_level"的值为1
$properties_other = array();
$properties_other["total_revenue"] = 60;
try{
  $ta->user_add($distinct_id,$account_id,$properties_other);
}catch (Exception $e){
   //异常处理
    echo $e;
}
?>

user_add設定のユーザー属性タイプと制限条件はuser_set一致しますが、数値型のユーザー属性にのみ有効です。

# 4.4 user_append

ユーザープロパティの値を array 型に追加する場合は、user_appendを呼び出して、指定したプロパティを追加できは、プロパティ

<?php
//user_append 追加一个用户的某一个或者多个集合
try{
    $properties = array();
    $properties['arr'] = ['str3','str4'];//为集合类型追加多个值,key-array形式,array里面都是字符串类型
    $ta->user_append($distinct_id, $account_id, $properties);
}catch (Exception $e){
    //handle except
    echo $e;
}
?>

# 4.5 user_del

ユーザーを削除する場合、user_del を呼び出しuser_del削除すると、そのユーザーのユーザー属性を照会することはできなくなりますが、そのユーザーが生成したイベントは引き続き照会でき

<?php
try{
  $ta->user_del($distinct_id,$account_id);
}catch (Exception $e){
   //异常处理
    echo $e;
}
?>

# 4.6 user_unset

ユーザーのユーザープロパティ値を空にする場合は、user_unsetを呼び出して指定されたプロパティを空にすることます。user_unset は作成

<?php
$properties = array(
    'user_age', "vip_level"
);
try{
 $ta->user_unset($distinct_id,$account_id, $properties);
}catch (Exception $e){
   //异常处理
    echo $e;
}
?>

# V.その他の操作

# 5.1 データの即時提出

<?php
$ta->flush();
?>

すぐに対応する受信機にデータを送信

# 5.2 SDK のシャットダウン

<?php
try{
  $ta->close();
}catch (Exception $e){
   //异常处理
    echo $e;
}
?>

sdk を閉じて終了し、サーバーを閉じる前にこのインターフェイスを呼び出して、キャッシュ内のデータが失わ

# 六、関連するプリセット属性

# 6.1 すべてのイベントのプリセットプロパティ

次のプリセットプロパティは、自動取得イベントを含む PHP SDK のすべてのイベントに適用されるプリセットプロパティ

プロパティ名
中国語の
説明
#ip
IPアドレス
ユーザーのIPアドレスは、手動で設定する必要があり、TAはユーザーの地理的位置情報
#国

ユーザーの国は、IPアドレスに基づいて生成されます
#カントリーコード
国コード
ユーザーがいる国の国コード(ISO 3166-1 alpha-2、つまり2大文字英字)は、IPアドレスに基づいて生成
#県

ユーザーの州、IPアドレスに基づいて生成
#都市
都市
ユーザーの都市は、IPアドレスに基づいて生成されます
#lib
SDKタイプ
SDKにアクセスするタイプ(PHPなど)
#リブバージョン
SDKバージョン
PHP SDKのバージョンにアクセスします

# 七、その他の機能

# 7.1 指定文書接頭辞

v1.5.0 以降、SDK の FileConsumer は生成されたテキストプレフィックスの指定をサポートしており、指定されたディレクトリが存在しない場合は自動的に作成されます。

<?php
// 最后一个参数即为指定的文件前缀,生成的文件名为:test.log.2020-12-07
$debugConsumer = new FileConsumer("/Users/sunzeyu/Work/test/test/", 0, false, "test");
$ta = new ThinkingDataAnalytics($debugConsumer);
?>

# 8、高度な機能

v1.4.0 以降、SDK では、更新可能イベントと書き換え可能イベントの 2 種類のイベントの報告がサポートされています。両方のイベントは、TA システム 2.8 以降のバージョンで使用する必要があります。特殊事件は特定の場面でしか適用されないので、数科学技術の顧客成功とアナリストの助けを得て、特殊事件を使ってデータを報告してください。

# 8.1 更新可能イベント

更新可能なイベントでは、特定のシナリオでイベントデータを変更する必要があることを実現できます。更新可能なイベントは、イベントを識別する ID を指定し、更新可能なイベントオブジェクトを作成するときに着信する必要があります。TA バックグラウンドは、イベント名とイベント ID に基づいて更新するデータを決定します。

$account_id = "2121";
$distinct_id = "SJ232d233243";
try{
// 示例: 上报可被更新的事件,假设事件名为 UPDATABLE_EVENT
$event_name = "UPDATABLE_EVENT";
$event_id = "test_event_id";
$properties = array();
$properties['price'] = 100;
$properties['status'] = 3;
// 上报后事件属性 status 为 3, price 为 100
$ta->track_update($distinct_id, $account_id,$event_name, $event_id,$properties);

$protertiesNew = array();
$protertiesNew['status'] = 5;
// 上报后同样 $event_name + $event_id 的事件属性 status 被更新为 5, price 不变
$ta->track_update($distinct_id, $account_id, $event_name, $event_id, $protertiesNew);

$ta->flush();
}catch (Exception $e){
    //handle except
    echo $e;
}

# 8.2 書き換え可能イベント

書き換え可能イベントは更新可能イベントと類似しており、書き換え可能イベントは最新のデータで履歴データを完全にカバーし、効果的には前のデータを削除し、最新のデータを入庫することに相当する。TA バックグラウンドは、イベント名とイベント ID に基づいて更新するデータを決定します。

$account_id = "2121";
$distinct_id = "SJ232d233243";
try{
// 示例: 上报可被重写的事件,假设事件名为 OVERWRITE_EVENT
$event_name = "OVERWRITE_EVENT";
$event_id = "test_event_id";
$properties = array();
$properties['price'] = 100;
$properties['status'] = 3;
// 上报后事件属性 status 为 3, price 为 100
$ta->track_overwrite($distinct_id, $account_id,$event_name, $event_id,$properties);

$protertiesNew = array();
$protertiesNew['status'] = 5;
// 上报后同样$event_name + $event_id  的事件属性 上报后事件属性 status 被更新为 5, price 属性被删除
$ta->track_overwrite($distinct_id, $account_id, $event_name, $event_id, $protertiesNew);

$ta->flush();
}catch (Exception $e){
    //handle except
    echo $e;
}

# チェンジログ

# v 1.8.0(2021/11/09)

  • 複雑な構造タイプをサポート

# v 1.7.0(2021/06/01)

  • 共通プロパティオーバーライドのバグを修正
  • user_del()メソッドが呼び出されない問題を修正

# v 1.6.0(2021/03/12)

  • BatchConsumer アップロード失敗キャッシュを増やす

# v 1.5.0(2020/12/07)

  • LoggerConsumer 追加指定されたディレクトリが存在しない場合に自動的に作成
  • LoggerConsumer テキストロック構成
  • LoggerConsumer 指定されたテキストプレフィックスを追加

# v 1.4.0(2020/08/27)

  • 新しい track_update インターフェイス、更新可能なイベント
  • 新しい track_overwrite インターフェイス、書き換え可能イベント
  • UUID 初期化方式を追加

# v 1.3.0(2020/02/10)

  • サポート array 型
  • ユーザーの配列型の属性追加をサポートする user_append インターフェイスを追加

# v 1.2.1(2020/01/15)

  • v1.1.1#time precise ミリ秒時のフォーマットが間違っていた

# v 1.2.0(2020/0/0 3)

  • user_unset インターフェイスを追加し、ユーザー属性の削除をサポート
  • LoggerConsumer オプティマイザ:安定性を高め、デフォルトのテキストサイズを 1G 上限にユーザーは自分で日、時間、大きさで分割する
  • DebugConsumer 最適化:サービス側でデータをより完全かつ正確に検証
  • BatchConsumer パフォーマンスの最適化:圧縮モードの設定、Base64 エンコーディングの削除

# v 1.1.1(2019/12/05)

  • #time をミリ秒単位でサポート

# v 1.1.0(2019/09/12)

  • サポート DebugConsumer
  • ログブックの時間分割をサポート

# v 1.0.4(2019/09/04)

  • BatchConsumer のエラーリターンコードを修正
  • BatchConsumer デストラクタを追加

# v 1.0.3(2019/08/30)

  • テキストサイズでテキストを分割する機能を追加しました