有一个定制的artisan命令,该命令可解析一些数据并将其写入MySQL DB。我正在手动运行此命令,因此没有任何schedules或cron作业。

保存数据后,我可以使用一段时间。通常,它的使用时间为10到20分钟。如果在保留后重新启动计算机,则可以处理一个小时左右的数据。之后,该表将自动清空,就像我truncate一样。

我的自定义命令在其构造函数中具有truncate命令,因此解析器清除表并重新填充表:

DB::statement('truncate clauses');


但是我不认为这是原因,因为cron不会运行此命令或其他命令(即使这样做,我的表中也会包含正确的数据)。

所有其他表都照常保存数据。

我想知道是什么原因导致这种奇怪的行为?

我的环境:新鲜的Laravel 5.2.31,Homestead,Vagrant 1.8.1。

最佳答案

artisan命令在应用程序中构造所有现有命令,无论它执行什么实际命令。如果在构造函数中有截断,则每次cron击中artisan时,或者执行简单的artisan route:list或任何其他artisan命令时,截断都会运行。

要对此进行测试,只需在构造函数中创建一个简单的命令exit并运行artisan list

10-07 19:53
查看更多