Artisan命令可能被缓存或运行错误的命令

时间:2017-02-24 14:03:11

标签: php laravel laravel-4

自从我将网站迁移到新服务器后,我遇到了一个奇怪的问题。旧服务器运行PHP 5.4,新服务器PHP 5.6。我在Laravel 4.2中有十几个Artisan命令,它们以不同的间隔通过cron运行。有时,它会运行错误的命令。我不知道它经常发生的频率,因为大多数都没有给出任何输出,但偶尔我会从Command Y收到错误通知,但是运行的命令是Command M. apc.enable_cli和{{1设置为关闭。我应该查看其他缓存设置,还是其他设置?

2 个答案:

答案 0 :(得分:2)

事实证明,这是一个编程错误,而且对Artisan如何运作的理解不完全。

当一个工匠命令运行时,Artisan会加载所有Artisan命令类,它们在每个命令类上运行__construct方法。然后它将触发正确的命令。我的问题是我在Command Y的__construct()方法中有一些随机失败的代码。我将该代码移动到fire()方法,因此它只会在调用该特定命令时运行。我在__construct方法中使用Log::debug("Running " . implode(' ', $_SERVER['argv']) . " from " . __CLASS__);验证了这一点,然后将该行移动到fire方法。

答案 1 :(得分:1)

您可以这样做:

php artisan cache:clear
composer dump-autoload