3

今天我遇到了一个关于 Artisan Command 生命周期的奇怪事情。

  1. 我添加了一个名为cronjobs:MyCommand.
  2. 创建了必要的文件和类。
  3. MyCommand扩展BaseCommand

BaseCommand是我用来对命令行操作进行基准测试的东西。它由构造函数和析构函数组成。构造函数跟踪操作的开始时间,析构函数在日志表中记录当前时间减去开始时间。

令我惊讶的是,我发现每次发出via artisan时,我的__destruct()函数总共被调用 5 次。BaseCommandcronjobs:MyCommand

这是正常行为吗?如果是这样,我应该如何处理日志记录?

4

2 回答 2

1

对 Symfony 2 的命令类的进一步测试表明,这是 Symfony 2 原生的问题,而 Laravel 4 则没有。

目前,以任何有用的方式在工匠命令的类(或其父级)中使用构造函数/析构函数似乎是不可能的。

任何输入仍然受到高度赞赏!

于 2013-09-09T09:52:43.460 回答
0

问题似乎仍未解决。我还使用 __destruct 方法创建了一个基本命令,该方法被多次执行。

我在我的基本命令中创建了一个关闭方法并在我的命令结束时调用。

于 2018-04-02T08:03:50.653 回答