#278: исключаем логгирование для ошибок, связанных с соединением с базой данных

This commit is contained in:
ErickSkrauch 2016-12-24 01:44:31 +03:00
parent 3bde676217
commit 1d364ea909

View File

@ -2,13 +2,18 @@
namespace console\controllers;
use Ely\Amqp\ControllerTrait;
use PhpAmqpLib\Message\AMQPMessage;
use Yii;
use yii\console\Controller;
use yii\db\Exception as YiiDbException;
use yii\helpers\ArrayHelper;
use yii\helpers\Inflector;
use yii\helpers\StringHelper;
abstract class AmqpController extends Controller {
use ControllerTrait;
use ControllerTrait {
callback as _callback;
}
public final function actionIndex() {
$this->start();
@ -18,6 +23,26 @@ abstract class AmqpController extends Controller {
return [];
}
/**
* Переопределяем метод callback, чтобы избержать логгирования в консоль ошибок,
* связанных с обвалом того или иного соединения. Это нормально, PHP рождён умирать,
* а не работать 24/7 в качестве демона.
*
* @param AMQPMessage $msg
* @throws YiiDbException
*/
public function callback(AMQPMessage $msg) {
try {
$this->_callback($msg);
} catch (YiiDbException $e) {
if (StringHelper::startsWith($e->getMessage(), 'Error while sending QUERY packet')) {
exit(self::EXIT_CODE_ERROR);
}
throw $e;
}
}
/**
* @inheritdoc
*/