可以在生产 Laravel 网站上运行 php artisan :clear 命令吗?

Jak*_*ino 4 php laravel composer-php server laravel-artisan

我有一个托管在 DigitalOcean NGINX 服务器上的生产 Laravel 网站,每次 git 推送新更新时,我总是运行以下命令:

php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear

composer dump-autoload
Run Code Online (Sandbox Code Playgroud)

这是一个好的做法,还是在我的服务器上运行这些命令会导致问题?

Ers*_*soy 5

clear除 s 之外的所有scache都可以成为部署脚本的一部分。

php artisan cache:clear在生产环境中运行风险极高,会导致意外结果,例如丢失所有关键数据。

假设您的缓存驱动程序、队列驱动程序、会话驱动程序是redis,它们都共享相同的 redis 实例(相同的主机)。当你执行的时候cache:clear会执行下面的方法

/**
 * Remove all items from the cache.
 *
 * @return bool
 */
public function flush()
{
    $this->connection()->flushdb();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

它所做的就是执行flushdbredis的命令。它将刷新所有用户的会话、所有排队的作业、所有缓存的项目、所有广播相关代码(如果它们位于同一数据库中)。这是方法

删除当前所选 DB 的所有键。这个命令永远不会失败。

编辑:如果他们使用相同的redis驱动程序+相同的主机但不同的数据库,那么这可能不会导致副作用问题,但需要手动配置为不同的组件设置不同的数据库。