このトピックでは、Simple Log Service SDK for PHPを使用して専用SQL機能を使用する方法について説明します。
前提条件
RAM (Resource Access Management) ユーザーが作成され、必要な権限がRAMユーザーに付与されます。 詳細については、「RAMユーザーの作成とRAMユーザーへの権限付与」をご参照ください。
ALIBABA_CLOUD_ACCESS_KEY_IDおよびALIBABA_CLOUD_ACCESS_KEY_SECRET環境変数が設定されています。 詳細については、「環境変数の設定」をご参照ください。
重要Alibaba CloudアカウントのAccessKeyペアには、すべてのAPI操作に対する権限があります。 RAMユーザーのAccessKeyペアを使用して、API操作を呼び出したり、ルーチンのO&Mを実行したりすることを推奨します。
プロジェクトコードにAccessKey IDまたはAccessKey secretを保存しないことを推奨します。 そうしないと、AccessKeyペアが漏洩し、アカウント内のすべてのリソースのセキュリティが侵害される可能性があります。
Simple Log Service SDK for PHPがインストールされています。 詳細については、「Simple Log Service SDK For PHPのインストール」をご参照ください。
背景情報
Simple Log Serviceは、SQL分析機能を強化する専用SQL機能を提供します。 この機能を使用して、数千億のデータレコードを処理できます。 詳細については、「Dedicated SQLの有効化」をご参照ください。
Simple Log Serviceは、Aliyun_Log_Models_LogStoreSqlRequest操作とAliyun_Log_Models_ProjectSqlRequest操作を提供します。 操作を呼び出して、Dedicated SQL機能を効率的に使用できます。
Aliyun_Log_Models_LogStoreSqlRequest: 指定されたLogstoreで専用SQL機能を使用します。 この操作は、標準のSQL-92構文をサポートしています。 クエリステートメントは
Searchステートメント | Analyticステートメント
の形式であり、分析ステートメントは標準のSQL-92構文に従います。Aliyun_Log_Models_ProjectSqlRequest: 指定したプロジェクトでDedicated SQL機能を使用します。 この操作は、標準のSQL-92構文をサポートしています。 SQL文のWHERE句でフィルター条件と時間範囲を指定する必要があります。
データを分析する前にデータをフィルタリングする場合は、分析効率を向上させるために、Aliyun_Log_Models_LogStoreSqlRequest操作を呼び出してSearch statement | Analytic statement
形式でクエリステートメントを指定することを推奨します。
サンプルコード
次のサンプルコードは、Dedicated SQL機能の使用方法の例を示しています。 詳細については、「Alibaba Cloud Simple Log Service SDK For PHP」をご参照ください。
<?PHP
require_once realpath(dirname(__FILE__) . './aliyun-log-php-sdk-master/Log_Autoload.php');
class test
{
public static function main()
{
// The Simple Log Service endpoint. In this example, the Simple Log Service endpoint for the China (Hangzhou) region is used. Replace the parameter value with the actual endpoint.
$endpoint = 'cn-hangzhou.log.aliyuncs.com';
// In this example, the AccessKey ID and AccessKey secret are obtained from environment variables.
$accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
$accessKey = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
// The name of the project.
$project = 'aliyun-test-project';
// The name of the Logstore.
$logstore = 'aliyun-test-logstore';
// The Security Token Service (STS) token.
$token = '';
// Create a Simple Log Service client.
$client = new Aliyun_Log_Client($endpoint, $accessKeyId, $accessKey, $token);
// Execute an SQL statement in the specified Logstore.
$from = time() - 3600;
$to = time();
$query = "* | select count(0)";
$request = new Aliyun_Log_Models_LogStoreSqlRequest($project, $logstore, $from, $to, $query, true);
try {
$response = $client->executeLogStoreSql($request);
foreach ($response->getLogs() as $log) {
print $log->getTime() . "\t";
foreach ($log->getContents() as $key => $value) {
print $key . ":" . $value . "\t";
}
print "\n";
}
// Display the statistics about the analysis results.
// The number of lines of log data that is processed.
print "proccesedRows:" . $response->getProcessedRows() . "\n";
// The time that is required to execute the SQL statement.
print "elapsedMilli:" . $response->getElapsedMilli() . "\n";
// The CPU time that is consumed to execute the SQL statement after the Dedicated SQL feature is enabled. Unit: seconds. You are charged for the Dedicated SQL feature based on the CPU time. For more information, see the topics that are related to billable items.
print "cpuSec:" . $response->getCpuSec() . "\n";
// The number of CPU cores that are used to execute the SQL statement after the Dedicated SQL feature is enabled.
print "cpuCores:" . $response->getCpuCores() . "\n";
} catch (Aliyun_Log_Exception $ex) {
logVarDump($ex);
} catch (Exception $ex) {
logVarDump($ex);
}
// Execute an SQL statement in the specified project.
$query = "select count(0) from gs-api where __time__ > to_unixtime(now()) - 300 and __time__ < to_unixtime(now())";
$request = new Aliyun_Log_Models_ProjectSqlRequest($project, $query, True);
try {
$response = $client->executeProjectSql($request);
#$response = $client->getProjectLogs($request);
foreach ($response->getLogs() as $log) {
print $log->getTime() . "\t";
foreach ($log->getContents() as $key => $value) {
print $key . ":" . $value . "\t";
}
print "\n";
}
// Display the statistics about the analysis results.
// The number of lines of log data that is processed.
print "proccesedRows:" . $response->getProcessedRows() . "\n";
// The time that is required to execute the SQL statement.
print "elapsedMilli:" . $response->getElapsedMilli() . "\n";
// The CPU time that is consumed to execute the SQL statement after the Dedicated SQL feature is enabled. Unit: seconds. You are charged for the Dedicated SQL feature based on the CPU time. For more information, see the topics that are related to billable items.
print "cpuSec:" . $response->getCpuSec() . "\n";
// The number of CPU cores that are used to execute the SQL statement after the Dedicated SQL feature is enabled.
print "cpuCores:" . $response->getCpuCores() . "\n";
print "requestId:" . $response->getRequestId() . "\n";
} catch (Aliyun_Log_Exception $ex) {
logVarDump($ex);
} catch (Exception $ex) {
logVarDump($ex);
}
}
}
test::main();
Aliyun_Log_Models_LogStoreSqlRequest操作
Dedicated SQL機能を使用するには、Aliyun_Log_Models_LogStoreSqlRequest操作を呼び出すことができます。 リクエストは次の形式である必要があります。
$from = time()-3600; $to = time(); $query = "* | select count(0)"; $request = new Aliyun_Log_Models_LogStoreSqlRequest($project,$logstore,$from,$to,$query,$powerSql);
下表に、各パラメーターを説明します。
パラメーター
データ型
必須
例
説明
$プロジェクト
String
課金されます
非該当
プロジェクトの名前。
Simple Log Serviceクライアントを作成するときは、$projectパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。
$logstore
String
課金されます
非該当
ログストアの名前
Simple Log Serviceクライアントを作成するときは、$logstoreパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。
$から
Long
課金されます
时间 ()-3600
照会する期間の開始時刻です。 この値は、1970年1月1日00:00:00 UTCから経過した秒数を表すUNIXタイムスタンプです。
$に
Long
課金されます
time()
照会する期間の終了時刻を設定します。 この値は、1970年1月1日00:00:00 UTCから経過した秒数を表すUNIXタイムスタンプです。
$クエリ
String
課金されます
"* | select count(method)"
クエリ 文。 形式:
Search statement | Analytic statement
詳細については、「構文」をご参照ください。デフォルトでは、Simple Log Serviceは100行のデータを返します。 LIMIT句を使用して、返すデータ行の数を指定できます。 詳細は、「LIMIT句」をご参照ください。
$powerSql
ブール値
課金されません
true
専用SQL機能を使用するかどうかを指定します。 詳細については、「Dedicated SQLの有効化」をご参照ください。 有効な値:
true: 専用SQL機能を使用します。
false (デフォルト): 標準SQL機能を使用します。
Aliyun_Log_Models_ProjectSqlRequest操作
Dedicated SQL機能を使用するには、Aliyun_Log_Models_ProjectSqlRequest操作を呼び出すことができます。 リクエストは次の形式である必要があります。
$query = "select count(0) from sls_operation_log where __time__ > to_unixtime(now()) - 300 and __time__ < to_unixtime(now())"; $request = new Aliyun_Log_Models_ProjectSqlRequest($project,$query,$powerSql);
下表に、各パラメーターを説明します。
パラメーター
データ型
必須
例
説明
$プロジェクト
String
課金されます
非該当
プロジェクトの名前。
Simple Log Serviceクライアントを作成するときは、$projectパラメーターの値を指定する必要があります。 したがって、パラメーターを再度設定する必要はありません。
$クエリ
String
課金されます
"select count(method) from sls_operation_log where __time__ > to_unixtime(now()) - 300 and __time__ < to_unixtime(now())"
SQL文。 SQL文のWHERE句で検索条件と時間範囲を指定する必要があります。
デフォルトでは、Simple Log Serviceは100行のデータを返します。 LIMIT句を使用して、返すデータ行の数を指定できます。 詳細は、「LIMIT句」をご参照ください。
$powerSql
ブール値
課金されません
true
専用SQL機能を使用するかどうかを指定します。 詳細については、「Dedicated SQLの有効化」をご参照ください。 有効な値:
true: 専用SQL機能を使用します。
false (デフォルト): 標準SQL機能を使用します。