メインコンテンツまでスキップ

PHP

最終更新 2026/10/03
ヒント

接続する前に、まず接続前の準備をお読みください。

GitHubでPHP SDKのソースコードを入手できます。

最新バージョン:v3.1.1

更新日:2024-07-24

リソースのダウンロード:ソースコード

注意

このドキュメントはv3.0.0以降のバージョンに適用されます。以前のバージョンについては、PHP SDK接続ガイド(V2)を参照してください

1. SDKの統合​

  1. composerを使用して統合
{
"require": {
"thinkinggame/ta-php-sdk": "v3.1.1"
}
}
  1. GitHubからSDKのソースコードを入手して、プロジェクトに統合することもできます。TaPhpSdk.phpをプロジェクトのディレクトリに配置するだけです。このSDKはPHP >5.5と互換性があり、一部の機能はcurl拡張に依存します。
  2. 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;
}
このページは役に立ちましたか?