目录
此内容是否有帮助?

# 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)

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