Как регистрировать все HTTP-запросы на сайт, используя фреймворк Yii?


Я хочу регистрировать все HTTP-запросы на сайт, фреймворк Yii.

Могу ли я использовать стандартные возможности фреймворка?

Author: Ozerich, 2013-01-04

2 answers

Мы сделали это с помощью onBeginRequest или onEndRequest. Смотрите дополнительную информацию здесь: Как использовать события в Yii

По сути, вы связываете событие глобального запроса со своим собственным классом, а затем делаете все, что хотите.

 2
Author: acorncom, 2017-05-23 12:09:02

В Yii2 события называются beforeRequest и afterRequest (http://www.yiiframework.com/doc-2.0/guide-structure-applications.html)

Например:

Yii::$app->on('afterRequest', function($event) {
    //do something...
    //response object is in $event->sender->response
    //response data is in $event->sender->response->data
    //request object is in $event->sender->request
});

Но это до того, как данные ответа были подготовлены в содержимое ответа (в соответствии с форматом ответа , например. Response::FORMAT_JSON), поэтому, если вы хотите получить истинное окончательное тело ответа, вам нужно это сделать (http://www.yiiframework.com/doc-2.0/guide-runtime-responses.html#sending-response):

Yii::$app->response->on(\yii\web\Response::EVENT_AFTER_SEND, function($event) {  //alternatively use EVENT_AFTER_PREPARE
    //now you can access $event->sender->content and eg. $event->sender->getHeaders()
    //Also, you have access to the request through Yii::$app->request
});
 1
Author: TheStoryCoder, 2017-12-04 10:03:50