ダウンロード
手順
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 をダウンロードしてインストール
- GitHub より最新の PHP SDK パッケージをダウンロードします。
- ダウンロードしたパッケージを指定のディレクトリに解凍します。 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);