ダウンロード

GitHub: https://github.com/aliyun/aliyun-log-php-sdk

手順

Log Service PHP SDK をすぐに使いはじめるための手順は、以下のとおりです。

ステップ 1 Alibaba Cloud アカウントを作成

Alibaba Cloud アカウントの作成方法については、アカウント登録手順をご参照ください。

ステップ 2 Alibaba Cloud AccessKey を取得

Log Service PHP SDK を使用する前に、Alibaba Cloud AccessKey を準備しておきます。

Alibaba Cloud アカウントでログインし、AccessKey 管理ページより、 SDK 用の AccessKey を選択します。 AccessKey を作成していない場合は作成します。また、AccessKey が有効になっていることを確認します。 SDK で AccessKey を作成する方法については、「準備」をご参照ください。

AccessKey は、以下のステップで必要になります。厳重に保管してください。 SDK で AccessKey を使用する方法については、「 設定 」をご参照ください。

ステップ 3 Log Service プロジェクトおよび Logstore を作成

Log Service PHP SDK を使用する前に、コンソールより Log Service プロジェクトおよび Logstore を作成します。

プロジェクトおよび Logstore の作成方法については、「準備」をご参照ください。

  • AccessKey、プロジェクトおよび Logstore は、同一の Alibaba Cloud アカウントで作成している必要があります。
  • Log Service プロジェクトおよび Logstore の詳細については、Log Service の「基本概念」をご参照ください。
  • プロジェクト名は Log Service 内で一意にします。また、Logstore 名はプロジェクト内で一意にします。
  • プロジェクトの作成後に、リージョンを変更することはできません。また、別のリージョンにプロジェクトを移行することもできません。

ステップ 4 PHP 開発環境をインストール

PHP SDK は、PHP のバージョン 5.2.1 以降に対応しています。 適したバージョンを PHP 開発環境にインストールし、開発環境を構築します。

ステップ 5 PHP SDK をダウンロードしてインストール

PHP 開発環境を構築後、PHP SDK をインストールします。 手順は次のとおりです。
  1. GitHub より最新の PHP SDK パッケージをダウンロードします。
  2. ダウンロードしたパッケージを指定のディレクトリに解凍します。 PHP SDK は、追加インストールの必要がない SDK です。 SDK のコードだけでなく、 SDK には便利なサードパーティーのライブラリパッケージおよび autoload クラスが含まれます。 PHP プロジェクトで SDK を直接使用する方法は、次のステップのとおりです。

ステップ 6 新規 PHP プロジェクトを使用開始

以上で PHP SDK を使用する準備が整いました。 Log Service にアクセスして必要なログを取得するには、テキストエディタまたは PHP IDE で次のサンプルコードを編集し、実行します。

<? php
/* autoload クラスで PHP モジュールを自動的に読み込む  (autoload クラスを含むファイルのファイルパスを指定)*/
require_once realpath(dirname(__FILE__) . '/.. /Log_Autoload.php');
$endpoint = 'cn-hangzhou.sls.aliyuncs.com'; // 上記のステップで作成したプロジェクトの属するリージョンのエンドポイントを指定
$accessKeyId = 'your_access_key_id';        // Alibaba Cloud AccessKey ID を指定
$accessKey = 'your_access_key';             // Alibaba Cloud AccessKey Secret を指定
$project = 'your_project';                  // 上記のステップで作成したプロジェクトの名前
$logstore = 'your_logstore'; // 上記のステップで作成した Logstore の名前
$client = new Aliyun_Sls_Client($endpoint, $accessId, $accessKey);
# プロジェクト内のすべての Logstore 名を列挙
$request = new Aliyun_Sls_Models_ListLogstoresRequest($project);
$response = $client->listLogstores($request);
var_dump($res1);
# LogStore を作成
$req2 = new Aliyun_Log_Models_CreateLogstoreRequest($project,$logstore,3,2);
$res2 = $client -> createLogstore($req2);
# Logstore が有効になるまで待機
sleep(60);
# ログを書き込む
$topic = "";
$source = "";
$logitems = array();
for ($i = 0; $i < 5; $i++)
{
    $contents = array('index1'=> strval($i));
    $logItem = new Aliyun_Log_Models_LogItem();
    $logItem->setTime(time());
    $logItem->setContents($contents);
    Array_push ($ logitems, $ logitem );
}
$req2 = new Aliyun_Log_Models_PutLogsRequest($project, $logstore, $topic, $source, $logitems);
$res2 = $client->putLogs($req2);
var_dump($res4);
# すぐにデータの読み込みを開始 (待機不要)
# すべてのシャードから読み込む
$listShardRequest = new Aliyun_Log_Models_ListShardsRequest($project,$logstore);
$listShardResponse = $client -> listShards($listShardRequest);
foreach($listShardResponse-> getShardIds() as $shardId)
{
    # 各シャード ID のカーソルを取得
    $getCursorRequest = new Aliyun_Log_Models_GetCursorRequest($project,$logstore,$shardId,null, time() - 60);
    $response = $client -> getCursor($getCursorRequest);
    $cursor = $response-> getCursor();
    $count = 100;
    while(true)
    {
        # カーソルの位置からデータを読み込む
        $batchGetDataRequest = new Aliyun_Log_Models_BatchGetLogsRequest($project,$logstore,$shardId,$count,$cursor);
        var_dump($batchGetDataRequest);
        $response = $client -> batchGetLogs($batchGetDataRequest);
        if($cursor == $response -> getNextCursor())
        {
            break;
        }
        $logGroupList = $response -> getLogGroupList();
        foreach($logGroupList as $logGroup)
        {
            print ($logGroup->getCategory());
            foreach($logGroup -> getLogsArray() as $log)
            {
                foreach($log -> getContentsArray() as $content)
                {
                    print($content-> getKey().":".$content->getValue()."\t");
                }
                print("\n");
            }
        }
        $cursor = $response -> getNextCursor();
    }
}
# 1 分間待機 (ログは 1 分後にクエリ可)
sleep(60);
# ログのクエリを送信 (注: ログをクエリする前にインデックスを作成しておきます。 PHP SDK にはインデックスを作成する関数がないため、コンソールより作成します。)
$topic = "";
$query='';
$from = time()-3600;
$to = time();
$res3 = NULL;
while (is_null($res3) || (! $res3->isCompleted()))
{
    $req3 = new Aliyun_Log_Models_GetHistogramsRequest($project, $logstore, $from, $to, $topic, $query);
    $res3 = $client->getHistograms($req3);
}
var_dump($res3);
# ログデータをクエリ
$res4 = NULL;
while (is_null($res4) || (! $res4->isCompleted()))
{
    $req4 = new Aliyun_Log_Models_GetLogsRequest($project, $logstore, $from, $to, $topic, $query, 5, 0, False);
    res4 = client.GetLogs(req4);
}
var_dump($res4);