<?php

require_once join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "src", "TreasureData", "Autoloader.php"));
date_default_timezone_set("UTC");
TreasureData_Autoloader::register();
$api = TreasureData_APIFactory::createClient();
printf("# Issuing getDatabaseList API\n");
$databases = $api->getDatabaseList()->getResult();
foreach ($databases->getDatabases() as $value) {
    /** @var TreasureData_API_Message_Database $value */
    printf("# %s\t%s\t%s\t%s\n", $value->getName(), $value->getCount(), $value->getCreatedAt()->format("Y-m-d H:i:s"), $value->getUpdatedAt()->format("Y-m-d H:i:s"));
}
<?php

require_once join(DIRECTORY_SEPARATOR, array(dirname(dirname(__FILE__)), "src", "TreasureData", "Autoloader.php"));
date_default_timezone_set("UTC");
TreasureData_Autoloader::register();
$api = TreasureData_APIFactory::createClient(array("api_key" => "<PUT YOUR API KEY HERE(see ~/.td/td.conf)>"));
$message = $api->issueHiveQuery("testdb", "select v['code'] as code, count(1) as cnt from www_access group by v['code']", 0)->getResult();
/* @var TreasureData_API_Message_IssueJob $message */
printf("# Issuing job_id %s successful\n", $message->getJobId());
printf("# polling job status. this will 30 over seconds...\n");
while (true) {
    printf("# Issuing job status api. we wait 10 seconds after issuing api.\n");
    $st = $api->getJobStatus($message->getJobId())->getResult();
    /* @var TreasureData_API_Message_JobStatus $status */
    if ($st->isSuccess()) {
        $result = $api->getJobResult($message->getJobId())->getResult();
        break;
    } else {
        if ($st->isError()) {
            throw new RuntimeException(sprintf("job_id %s returns error", $message->getJobId()));
        } else {
            printf(".");
            var_dump($st);
            sleep(10);
        }
    }
}
var_dump($result);