PHP
最新バージョン:v3.1.1
更新日:2024-07-24
リソースのダウンロード:ソースコード
このドキュメントはv3.0.0以降のバージョンに適用されます。以前のバージョンについては、PHP SDK接続ガイド(V2)を参照してください
1. SDKの統合
- composerを使用して統合
{
"require": {
"thinkinggame/ta-php-sdk": "v3.1.1"
}
}
- GitHubからSDKのソースコードを入手して、プロジェクトに統合することもできます。TaPhpSdk.phpをプロジェクトのディレクトリに配置するだけです。このSDKはPHP >5.5と互換性があり、一部の機能はcurl拡張に依存します。
- Logbusのインストール
SDK+LogBusの形式でサーバー側のデータの収集と送信を行うことをお勧めします。次のドキュメントを参考に、Logbusをインストールしてください:LogBus使用ガイド
2. 初期化
SDKの初期化のサンプルコードは次のとおりです:
require_once "vendor/autoload.php";
use Exception;
use ThinkingData\TDLog;
use ThinkingData\TDAnalytics;
use ThinkingData\TDFileConsumer;
use ThinkingData\TDDebugConsumer;
use ThinkingData\TDBatchConsumer;
use ThinkingData\ThinkingDataException;
TDLog::$enable = true;
$consumer = new TDFileConsumer("LOG_DIRECTORY", 200, true, "LOG_FILE_PREFIX");
$teSDK = new TDAnalytics($consumer, true);
LOG_DIRECTORYは、ローカルに書き込むフォルダーのパスです。LogBusの監視フォルダーのパスをここで指定したパスに設定するだけで、LogBusでデータを監視して送信できます。
LOG_FILE_PREFIXはログファイル名のプレフィックスです。
3. よく使う機能
ゲストIDとアカウントIDを正しく紐付けるため、ゲーム内でゲストIDとアカウントIDの両方を使用する場合は、この2つのIDを同時に送信することを強くお勧めします。そうしないと、アカウントが一致せず、ユーザーが重複してカウントされる可能性があります。具体的なIDの紐付けルールについては、ユーザー識別ルールの章を参照してください。
3.1 イベントの送信
trackを呼び出してイベントを送信できます。事前に整理したドキュメントに従って、イベントのプロパティと送信条件を設定することをお勧めします。イベントを送信するサンプルコードは次のとおりです:
$account_id = 2121;
$distinct_id = 'SJ232d233243';
$properties = array();
$properties['age'] = 20;
$properties['Product_Name'] = 'c';
$properties['update_time'] = date('Y-m-d H:i:s', time());
$json = array();
$json['a'] = "a";
$json['b'] = "b";
$jsonArray = array();
$jsonArray[0] = $json;
$jsonArray[1] = $json;
$properties['json'] = $json;
$properties['jsonArray'] = $jsonArray;
try {
$teSDK->track($distinct_id, $account_id, "viewPage", $properties);
} catch (Exception $e) {
echo $e;
}
- イベント名は文字列型で、英字で始まり、数字、英字、アンダースコア"_"を含めることができます。最大長は50文字です。
- Keyはそのプロパティの名前で、文字列型です。英字で始まり、数字、英字、アンダースコア "_" を含めることができます。最大長は50文字で、英字の大文字と小文字は区別されません。AEはすべて小文字に変換します
- Valueはプロパティの値で、文字列、数値、ブール値、時間、オブジェクト、オブジェクトグループ、配列に対応しています
ユーザープロパティの要件は、イベントプロパティと同じです
3.2 ユーザープロパティの設定
一般的なユーザープロパティは、user_setを呼び出して設定できます。このインターフェースで送信したプロパティは、既存のプロパティ値を上書きします。そのユーザープロパティが以前に存在しない場合は新しく作成され、タイプは渡されたプロパティのタイプと同じになります。ここでは、ユーザー名の設定を例にします:
$properties = array();
$properties['once_key'] = 'twice';
$properties['age'] = 10;
$properties['money'] = 300;
$properties['array1'] = ['str1', 'str2'];
try {
$teSDK->user_set('distinct_id', 'account_id', $properties);
} catch (Exception $e) {
//handle except
echo $e;
}
3.3 データの送信
TDFileConsumerを使用する場合、収集されたイベントはまずjson文字列に変換され、キャッシュ配列に追加されます。配列要素の数が設定された容量を超えた時点で、データがディスクに書き込まれます。デフォルトの容量上限は100件です。
業務シナリオによっては、データをすぐにAEサーバーへ送信したい場合があります。その場合はflush()インターフェースを呼び出します。なお、flush()を頻繁に呼び出すと、サービスのパフォーマンスが低下します。
$teSDK->flush();
3.4 SDKの終了
try{
$teSDK->close();
} catch (Exception $e){
//例外処理
echo $e;
}
SDKを終了します。キャッシュ内のデータが失われないよう、サーバーをシャットダウンする前にこのインターフェースを呼び出してください
4. ベストプラクティス
次のサンプルコードには、上記のすべての操作が含まれています。次の手順で使用することをお勧めします:
require_once "vendor/autoload.php";
use Exception;
use ThinkingData\TDLog;
use ThinkingData\TDAnalytics;
use ThinkingData\TDFileConsumer;
use ThinkingData\TDDebugConsumer;
use ThinkingData\TDBatchConsumer;
use ThinkingData\ThinkingDataException;
TDLog::$enable = true;
$consumer = new TDFileConsumer("LOG_DIRECTORY", 200, true, "te");
$teSDK = new TDAnalytics($consumer, true);
$account_id = 2121;
$distinct_id = 'SJ232d233243';
$properties = array();
$properties['age'] = 20;
$properties['Product_Name'] = 'c';
$properties['update_time'] = date('Y-m-d H:i:s', time());
$json = array();
$json['a'] = "a";
$json['b'] = "b";
$jsonArray = array();
$jsonArray[0] = $json;
$jsonArray[1] = $json;
$properties['json'] = $json;
$properties['jsonArray'] = $jsonArray;
try {
$teSDK->track($distinct_id, $account_id, "viewPage", $properties);
} catch (Exception $e) {
echo $e;
}
$properties = array();
$properties['once_key'] = 'twice';
$properties['age'] = 10;
$properties['money'] = 300;
$properties['array1'] = ['str1', 'str2'];
try {
$teSDK->user_set($distinct_id, $account_id, $properties);
} catch (Exception $e) {
//handle except
echo $e;
}

