Use o SDK do Simple Log Service para PHP para executar consultas SQL com o recurso Dedicated SQL.
Pré-requisitos
O Simple Log Service está ativado. Ativar o Simple Log Service.
-
Um par de AccessKey foi criado e obtido. Para mais informações, consulte Par de AccessKey.
O par de AccessKey de uma conta Alibaba Cloud tem permissões em todas as operações de API. O uso dessas credenciais para realizar operações no Simple Log Service apresenta alto risco. Recomendamos usar um usuário do Resource Access Management (RAM) para chamar operações de API ou executar tarefas rotineiras de O&M. Para criar um usuário RAM, faça login no console do RAM. Verifique se o usuário RAM tem permissões de gerenciamento sobre os recursos do Simple Log Service. Para mais informações, consulte Criar um usuário RAM e conceder permissões.
O SDK do Simple Log Service para PHP está instalado. Para mais informações, consulte Instalar o SDK para PHP.
Informações gerais
O recurso Dedicated SQL aprimora a análise SQL e processa centenas de bilhões de registros de dados. Para mais informações, consulte Consulta e análise de alta precisão e alto desempenho (Dedicated SQL).
O Simple Log Service oferece as seguintes operações para o recurso Dedicated SQL:
Aliyun_Log_Models_LogStoreSqlRequest: executa consultas Dedicated SQL em um Logstore específico. Esta operação suporta a sintaxe SQL-92 padrão. A instrução de consulta segue o formato
Search statement|Analytic statement, e a instrução analítica obedece à sintaxe SQL-92 padrão.Aliyun_Log_Models_ProjectSqlRequest: executa consultas Dedicated SQL em um projeto específico. Esta operação suporta a sintaxe SQL-92 padrão. Especifique uma condição de filtro e um intervalo de tempo na cláusula WHERE da instrução SQL.
Para filtrar dados antes da análise, recomendamos chamar a operação Aliyun_Log_Models_LogStoreSqlRequest e especificar uma instrução de consulta no formato Search statement|Analytic statement para aumentar a eficiência da análise.
Código de exemplo
O código de exemplo abaixo demonstra como usar o recurso Dedicated SQL. Para mais informações, consulte SDK do Alibaba Cloud Simple Log Service para 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)";
$topic = "";
$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();
-
Operação Aliyun_Log_Models_LogStoreSqlRequest
Chame a operação Aliyun_Log_Models_LogStoreSqlRequest para usar o recurso Dedicated SQL. O formato da solicitação é:
$from = time()-3600; $to = time(); $query = "* | select count(0)"; $topic = ""; $request = new Aliyun_Log_Models_LogStoreSqlRequest($project,$logstore,$from,$to,$topic,$query,$powerSql);A tabela a seguir descreve os parâmetros.
Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
$project
String
Sim
N/A
Nome do projeto. Definido durante a criação do cliente do Simple Log Service. Não é necessário configurá-lo novamente.
$logstore
String
Sim
N/A
Nome do Logstore. Definido durante a criação do cliente do Simple Log Service. Não é necessário configurá-lo novamente.
$from
Long
Sim
time()-3600
Início do intervalo de tempo da consulta. O valor é um timestamp UNIX que representa o número de segundos decorridos desde 1º de janeiro de 1970, 00:00:00 UTC.
$to
Long
Sim
time()
Fim do intervalo de tempo da consulta. O valor é um timestamp UNIX que representa o número de segundos decorridos desde 1º de janeiro de 1970, 00:00:00 UTC.
$topic
String
Não
topic-test
Tópico dos logs.
$query
String
Sim
"* | select count(method)"Instrução de consulta. Formato:
Search statement|Analytic statement. Para mais informações, consulte Sintaxe.Por padrão, o Simple Log Service retorna 100 linhas de dados. Use uma cláusula LIMIT para especificar a quantidade de linhas de dados a retornar. Para mais informações, consulte Cláusula LIMIT.
$powerSql
Boolean
Não
true
Define se o recurso Dedicated SQL será usado. Para mais informações, consulte Consulta e análise de alta precisão e alto desempenho (Dedicated SQL). Valores válidos:
-
true: usa o recurso Dedicated SQL.
-
false (padrão): usa o recurso Standard SQL.
-
-
Operação Aliyun_Log_Models_ProjectSqlRequest
Chame a operação Aliyun_Log_Models_ProjectSqlRequest para usar o recurso Dedicated SQL. O formato da solicitação é:
$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);A tabela a seguir descreve os parâmetros.
Parâmetro
Tipo
Obrigatório
Exemplo
Descrição
$project
String
Sim
N/A
Nome do projeto. Definido durante a criação do cliente do Simple Log Service. Não é necessário configurá-lo novamente.
$query
String
Sim
" select count(method) from sls_operation_log where __time__ > to_unixtime(now()) - 300 and __time__ < to_unixtime(now())"Instrução SQL. Especifique a condição de busca e o intervalo de tempo na cláusula WHERE da instrução SQL.
Por padrão, o Simple Log Service retorna 100 linhas de dados. Use uma cláusula LIMIT para especificar a quantidade de linhas de dados a retornar. Para mais informações, consulte Cláusula LIMIT.
$powerSql
Boolean
Não
true
Define se o recurso Dedicated SQL será usado. Para mais informações, consulte Consulta e análise de alta precisão e alto desempenho (Dedicated SQL). Valores válidos:
-
true: usa o recurso Dedicated SQL.
-
false (padrão): usa o recurso Standard SQL.
-