PHP-Yii: использование регистратора Yiis, когда запрос не выполнен из-за ошибки уровня php - PullRequest
0 голосов
/ 31 марта 2011

Это, вероятно, вопрос, специфичный для yii, хотя я не удивлюсь, если опытные разработчики, не являющиеся пользователями Yii, также смогут внести свой вклад.

Я часто сталкиваюсь со следующей ситуацией:

  1. Сбой моего приложения из-за фатальной ошибки на уровне php. Что-то вроде $ var-> property, когда $ var == null
  2. Я хочу понять, как $ var == null.
  3. Я бы использовал для этого логи, однако проблема в том, что при завершении запроса из-за ошибки php не осталось логов.

edit: это происходит только для фатальных ошибок. Для других ошибок php у меня есть свои журналы назад

Пример: Для

$nonExistingVar->someProperty;

У меня записаны мои журналы, так как это приводит к PHP Error Undefined variable: nonExistingVar Однако, если я определю переменную и установлю ее на ноль,

$tmp = null;
$tmp->prop;

Затем я теряю логи, так как это приводит к « Fatal error: вызов функции-члена hasErrors () для необъекта»

Кто-нибудь понимает, почему это происходит? И как в любом случае использовать регистратор в таких ситуациях? Я попытался установить autoFlush = 1, не помогает

Спасибо

Гиди

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

Я написал класс расширения, который регистрирует в режиме реального времени, таким образом, избегая необходимости изменять пути потока. Я разместил это здесь на Yii Wiki

1 голос
/ 31 марта 2011

Ниже позволил мне иметь свои журналы даже при фатальных ошибках:

function yiiCorrectShutdown()
{
    Yii::app()->end();

    //the following line will work as well
    //Yii::app()->log->processLogs(null);
}

register_shutdown_function('yiiCorrectShutdown');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...