0

我正面临 CakePHP 2.1 的一个奇怪行为:

我有一个方法,$this->Time->getTime();它总是记录一个动作,然后返回 true。从浏览器调用时,它按预期工作:记录操作,然后返回 true。

我创建了一个 shell,只有在返回 true时才会TimeShell在其中记录另一个操作。现在,奇怪的是记录了第二个操作,因此该方法返回了 true,但是该方法中的操作(显然必须运行,因为它传递了它并返回了 true)没有被记录。$this->Time->getTime();

当从 shell 调用方法时,为什么不记录第一个操作?(如果有帮助,shell 将通过我服务器上的 cron 作业运行)

编辑

经过进一步测试,我发现如果我不记录第二个动作(shell 中的那个),那么第一个动作(in $this->Time->getTime();)会被正确记录。但我不明白为什么 Cake 只记录应该记录的最后一个动作。

此外,似乎只有 DatabaseLogger 以这种方式运行,FileLog 记录这两个操作。很奇怪。

4

1 回答 1

0

看起来答案非常简单:我$this->Log->create();在保存记录的操作之前忘记调用,因此第二个操作覆盖了第一个操作。

create();话虽如此,如果您在保存数据时遇到任何问题(主要是在发生覆盖时),我建议您检查是否调用了该方法。在许多情况下,这将是解决方案。

于 2012-02-07T20:52:48.713 回答