すべてのプロダクト
Search
ドキュメントセンター

Simple Log Service:PHP 向け Simple Log Service SDK を使用して専用 SQL 機能を使用する

最終更新日:Mar 05, 2025

このトピックでは、PHP 向け Simple Log Service SDK を使用して専用 SQL 機能を使用する方法について説明します。

前提条件

  • Simple Log Service がアクティブ化されていること。詳細については、「Simple Log Service をアクティブ化する」をご参照ください。

  • AccessKey ペアが作成され、取得されていること。詳細については、「AccessKey ペア」をご参照ください。

    Alibaba Cloud アカウントの AccessKey ペアは、すべての API 操作に対する権限を持っています。これらの認証情報を使用して Simple Log Service で操作を実行することは、リスクの高い操作です。API 操作の呼び出しや日常的な O&M の実行には、Resource Access Management (RAM) ユーザーを使用することをお勧めします。RAM ユーザーを作成するには、RAM コンソールにログインします。RAM ユーザーが Simple Log Service リソースに対する管理権限を持っていることを確認してください。詳細については、「ステップ 2: RAM ユーザーに権限を付与する」をご参照ください。

  • PHP 向け Simple Log Service SDK がインストールされていること。詳細については、「PHP 向け Simple Log Service SDK をインストールする」をご参照ください。

背景情報

Simple Log Service は、SQL 分析機能を強化するために専用 SQL 機能を提供しています。この機能を使用すると、数百億件のデータレコードを処理できます。詳細については、「専用 SQL を有効にする」をご参照ください。

Simple Log Service は、Aliyun_Log_Models_LogStoreSqlRequest 操作と Aliyun_Log_Models_ProjectSqlRequest 操作を提供しています。これらの操作を呼び出して、専用 SQL 機能を効率的に使用できます。

  • Aliyun_Log_Models_LogStoreSqlRequest: 指定されたログストアで専用 SQL 機能を使用します。この操作は、標準 SQL-92 構文をサポートしています。クエリ文は Search statement|Analytic statement 形式で、分析文は標準 SQL-92 構文に従います。

  • Aliyun_Log_Models_ProjectSqlRequest: 指定されたプロジェクトで専用 SQL 機能を使用します。この操作は、標準 SQL-92 構文をサポートしています。SQL 文の WHERE 句で、フィルター条件と時間範囲を指定する必要があります。

説明

データを分析する前にデータをフィルタリングする場合は、Aliyun_Log_Models_LogStoreSqlRequest 操作を呼び出し、Search statement|Analytic statement 形式でクエリ文を指定して、分析効率を向上させることをお勧めします。

サンプルコード

次のサンプルコードは、専用 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()
    {
        // Simple Log Service エンドポイント。この例では、中国 (杭州) リージョンの Simple Log Service エンドポイントが使用されています。パラメーター値を実際のエンドポイントに置き換えてください。
        $endpoint = 'cn-hangzhou.log.aliyuncs.com';
        // この例では、AccessKey ID と AccessKey シークレットは環境変数から取得されます。
        $accessKeyId = getenv('ALIBABA_CLOUD_ACCESS_KEY_ID');
        $accessKey = getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET');
        // プロジェクト名。
        $project = 'aliyun-test-project';
        // ログストア名。
        $logstore = 'aliyun-test-logstore';
        // セキュリティトークンサービス (STS) トークン。
        $token = '';
        // Simple Log Service クライアントを作成します。
        $client = new Aliyun_Log_Client($endpoint, $accessKeyId, $accessKey, $token);

        // 指定されたログストアで SQL 文を実行します。
        $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";
            }
            // 分析結果に関する統計情報を表示します。
            // 処理されたログデータの行数。
            print "proccesedRows:" . $response->getProcessedRows() . "\n";
            // SQL 文の実行に要した時間。
            print "elapsedMilli:" . $response->getElapsedMilli() . "\n";
            // 専用 SQL 機能が有効になった後、SQL 文の実行に消費された CPU 時間。単位: 秒。専用 SQL 機能は、CPU 時間に基づいて課金されます。詳細については、課金項目に関するトピックをご参照ください。
            print "cpuSec:" . $response->getCpuSec() . "\n";
            // 専用 SQL 機能が有効になった後、SQL 文の実行に使用された CPU コア数。
            print "cpuCores:" . $response->getCpuCores() . "\n";

        } catch (Aliyun_Log_Exception $ex) {
            logVarDump($ex);
        } catch (Exception $ex) {
            logVarDump($ex);
        }

        // 指定されたプロジェクトで SQL 文を実行します。
        $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";
            }
            // 分析結果に関する統計情報を表示します。
            // 処理されたログデータの行数。
            print "proccesedRows:" . $response->getProcessedRows() . "\n";
            // SQL 文の実行に要した時間。
            print "elapsedMilli:" . $response->getElapsedMilli() . "\n";
            // 専用 SQL 機能が有効になった後、SQL 文の実行に消費された CPU 時間。単位: 秒。専用 SQL 機能は、CPU 時間に基づいて課金されます。詳細については、課金項目に関するトピックをご参照ください。
            print "cpuSec:" . $response->getCpuSec() . "\n";
            // 専用 SQL 機能が有効になった後、SQL 文の実行に使用された CPU コア数。
            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 操作

    Aliyun_Log_Models_LogStoreSqlRequest 操作を呼び出して、専用 SQL 機能を使用できます。リクエストは次の形式である必要があります。

    $from = time()-3600;
    $to = time();
    $query = "* | select count(0)";
    $request = new Aliyun_Log_Models_LogStoreSqlRequest($project,$logstore,$from,$to,$query,$powerSql);

    次の表にパラメーターを示します。

    パラメーター

    タイプ

    必須

    説明

    $project

    String

    はい

    N/A

    プロジェクト名。

    Simple Log Service クライアントを作成するときに、$project パラメーターの値を指定する必要があります。そのため、このパラメーターを再度設定する必要はありません。

    $logstore

    String

    はい

    N/A

    ログストア名。

    Simple Log Service クライアントを作成するときに、$logstore パラメーターの値を指定する必要があります。そのため、このパラメーターを再度設定する必要はありません。

    $from

    Long

    はい

    time()-3600

    クエリ対象の時間範囲の開始時刻。値は、1970 年 1 月 1 日 00:00:00 UTC から経過した秒数を表す UNIX タイムスタンプです。

    $to

    Long

    はい

    time()

    クエリ対象の時間範囲の終了時刻。値は、1970 年 1 月 1 日 00:00:00 UTC から経過した秒数を表す UNIX タイムスタンプです。

    $topic

    String

    いいえ

    topic-test

    ログのトピック。

    $query

    String

    はい

    "* | select count(method)"

    クエリ文。形式: Search statement|Analytic statement。詳細については、「構文」をご参照ください。

    デフォルトでは、Simple Log Service は 100 行のデータを返します。LIMIT 句を使用して、返すデータ行数を指定できます。詳細については、「LIMIT 句」をご参照ください。

    $powerSql

    Boolean

    いいえ

    true

    専用 SQL 機能を使用するかどうかを指定します。詳細については、「専用 SQL を有効にする」をご参照ください。有効な値:

    • true: 専用 SQL 機能を使用します。

    • false (デフォルト): 標準 SQL 機能を使用します。

  • Aliyun_Log_Models_ProjectSqlRequest 操作

    Aliyun_Log_Models_ProjectSqlRequest 操作を呼び出して、専用 SQL 機能を使用できます。リクエストは次の形式である必要があります。

    $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);   

    次の表にパラメーターを示します。

    パラメーター

    タイプ

    必須

    説明

    $project

    String

    はい

    N/A

    プロジェクト名。

    Simple Log Service クライアントを作成するときに、$project パラメーターの値を指定する必要があります。そのため、このパラメーターを再度設定する必要はありません。

    $query

    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

    Boolean

    いいえ

    true

    専用 SQL 機能を使用するかどうかを指定します。詳細については、「専用 SQL を有効にする」をご参照ください。有効な値:

    • true: 専用 SQL 機能を使用します。

    • false (デフォルト): 標準 SQL 機能を使用します。