Ведение журнала не происходит при вызове оболочки в CakePHP 2.1 - PullRequest
0 голосов
/ 07 февраля 2012

CakePHP 2.1 сталкивается со странным поведением:

У меня есть метод $this->Time->getTime();, который всегда регистрирует действие, а затем возвращает true.При вызове из браузера он работает как ожидалось: регистрирует действие, затем возвращает true.

Я создал оболочку TimeShell, в которой я регистрирую другое действие только , если $this->Time->getTime(); возвращает истину.Теперь странная вещь заключается в том, что второе действие регистрируется, следовательно, метод возвратил значение true, но действие метода (которое, очевидно, должно было выполняться, поскольку оно прошло его и вернуло true) не регистрируется.

Почему не регистрируется первое действие, когда метод вызывается из оболочки?(если это помогает, оболочка запускается через задание cron на моем сервере)

РЕДАКТИРОВАТЬ

После дальнейшего тестирования я обнаружил, что если я не буду регистрироватьсявторое действие (в оболочке), затем первое действие (в $this->Time->getTime();) записывается правильно.Но я не могу понять, почему Cake регистрирует только последнее действие из тех, которые должны быть зарегистрированы.

Более того, похоже, что только DatabaseLogger ведет себя таким образом, FileLog регистрирует оба действия.Очень странно.

1 Ответ

0 голосов
/ 08 февраля 2012

Похоже, ответ был предельно прост: я забыл позвонить $this->Log->create(); перед сохранением зарегистрированного действия, поэтому второе действие перезаписывало первое.

При этом я рекомендую проверить, вызван ли у вас метод create();, если у вас возникнут проблемы с сохранением данных (в основном, когда происходит перезапись). Во многих случаях это было бы решением.

...