【问题标题】:Artisan commands possibly being cached or running wrong commandArtisan 命令可能被缓存或运行错误的命令
【发布时间】:2017-07-15 09:39:04
【问题描述】:

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

【问题讨论】:

  • php artisan cache:clear ?
  • 使用composer dump-autoload。这肯定会解决您的问题。
  • @Manish 我会试试的。
  • @meda,我认为这仅适用于网络,经常运行该命令会很烦人且适得其反。

标签: php laravel laravel-4


【解决方案1】:

事实证明这是一个编程错误,并且对 Artisan 的工作方式理解不完整。

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

【讨论】:

    【解决方案2】:

    你可以这样做:

    php artisan cache:clear
    composer dump-autoload
    

    【讨论】:

    • 作曲家dumpautoload可能已经做到了,这让我觉得很傻。它不会一直发生,所以我会在一天左右后回来查看。
    • 不幸的是,即使使用这两个命令,也会发生同样的事情。
    猜你喜欢
    • 2015-10-09
    • 2017-01-18
    • 2012-06-16
    • 1970-01-01
    • 2017-05-31
    • 2019-12-23
    • 2021-12-27
    • 2021-05-27
    • 2017-10-25
    相关资源
    最近更新 更多