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

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

最終更新日:Sep 05, 2024

このトピックでは、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機能を使用します。