Class yii\elasticsearch\DebugAction

Inheritanceyii\elasticsearch\DebugAction » yii\base\Action
Available since extension's version2.0
Source Code https://github.com/yiisoft/yii2-elasticsearch/blob/master/DebugAction.php

Debug Action is used by yii\elasticsearch\DebugPanel to perform Elasticsearch queries using ajax.

Public Properties

Hide inherited properties

Property Type Description Defined By
$controller \yii\debug\controllers\DefaultController yii\elasticsearch\DebugAction
$db string The connection id to use yii\elasticsearch\DebugAction
$panel yii\elasticsearch\DebugPanel yii\elasticsearch\DebugAction

Public Methods

Hide inherited methods

Method Description Defined By
run() yii\elasticsearch\DebugAction

Property Details

Hide inherited properties

$controller public property
public \yii\debug\controllers\DefaultController $controller null
$db public property

The connection id to use

public string $db null
$panel public property

Method Details

Hide inherited methods

run() public method

public void run ( $logId, $tag )
$logId
$tag

                public function run($logId, $tag)
{
    $this->controller->loadData($tag);
    $timings = $this->panel->calculateTimings();
    ArrayHelper::multisort($timings, 3, SORT_DESC);
    if (!isset($timings[$logId])) {
        throw new HttpException(404, 'Log message not found.');
    }
    $message = $timings[$logId][1];
    if (($pos = mb_strpos($message, "#")) !== false) {
        $url = mb_substr($message, 0, $pos);
        $body = mb_substr($message, $pos + 1);
    } else {
        $url = $message;
        $body = null;
    }
    $method = mb_substr($url, 0, $pos = mb_strpos($url, ' '));
    $url = mb_substr($url, $pos + 1);
    $options = ['pretty' => 'true'];
    /* @var $db Connection */
    $db = \Yii::$app->get($this->db);
    $time = microtime(true);
    switch ($method) {
        case 'GET': $result = $db->get($url, $options, $body, true); break;
        case 'POST': $result = $db->post($url, $options, $body, true); break;
        case 'PUT': $result = $db->put($url, $options, $body, true); break;
        case 'DELETE': $result = $db->delete($url, $options, $body, true); break;
        case 'HEAD': $result = $db->head($url, $options, $body); break;
        default:
            throw new NotSupportedException("Request method '$method' is not supported by Elasticsearch.");
    }
    $time = microtime(true) - $time;
    if ($result === true) {
        $result = '<span class="label label-success">success</span>';
    } elseif ($result === false) {
        $result = '<span class="label label-danger">no success</span>';
    }
    Yii::$app->response->format = Response::FORMAT_JSON;
    return [
        'time' => sprintf('%.1f ms', $time * 1000),
        'result' => $result,
    ];
}