Yii не входит в систему с бесконечным циклом

Я не уверен, что это ошибка в YII или я делаю неправильный подход. Я создаю внутренний процесс, который запускается без остановки, а регистрация — это то, что имеет решающее значение.

Я создал консольное приложение. Моя регистрация работает, когда я делаю это:

public function actionTest(){
Yii::log( "testing", 'error', 'worker.*');
return;
}

Я могу видеть, что «тестирование» зарегистрировано в файле worker.log, который находится в папке времени выполнения>

Однако, когда я создаю бесконечный цикл, я не вижу ничего, что регистрируется:

public function actionTest(){
while(1){
Yii::log( "testing", 'error', 'worker.*');
echo 'running';
usleep(5000000);
}
}

Файл worker.log пуст.

Вот параметр конфигурации для worker.log в console.php:

array(
'class'=>'CFileLogRoute',
'categories' => 'worker.*',
'logFile' => 'worker.log'
)

1

Решение

По соображениям производительности по умолчанию Yii выводит записи журнала в конце запроса ИЛИ, когда CLogger :: AutoFlash лимит сообщений достигнут, ЕСЛИ CLogger :: автосамосвалов установлен в правда.

В вашем случае это событие никогда не происходит. Чтобы исправить это у вас есть несколько вариантов:

  • настройте CLogger для сброса сообщений сразу после их регистрации, установив autoFlash = 1 а также autoDump = true
  • вызов CLogger :: вровень () метод вручную
  • Вы можете создать свой собственный класс журнала, который сбрасывает сообщения так, как вам нужно
  • или используйте одну из существующих реализаций, которая сразу сбрасывает сообщения, например этот.
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]