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

时间:2020-05-18 21:28:05

标签: php laravel server composer-php 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

这是一个好习惯吗,还是在服务器上运行这些命令会导致问题?

2 个答案:

答案 0 :(得分:4)

status = 1之外的所有clear都可以作为部署脚本的一部分。

但是在生产环境中运行cache极具风险,并且会导致意外结果,例如丢失所有关键数据。

假设您的缓存驱动程序,队列驱动程序,会话驱动程序为php artisan cache:clear,它们都共享相同的Redis实例(同一主机)。当您执行redis时,它将执行以下方法

cache:clear

它的作用是执行redis的/** * Remove all items from the cache. * * @return bool */ public function flush() { $this->connection()->flushdb(); return true; } 命令。如果它们在同一个数据库中,它将刷新所有用户,所有排队的作业,所有缓存的项目,所有与广播相关的代码的会话。这是method

删除当前所选数据库的所有键。此命令永远不会失败。

编辑:如果他们使用相同的Redis驱动程序+相同的主机,但使用不同的数据库,则这可能不会引起副作用,但是需要手动配置为不同的组件设置不同的数据库。

答案 1 :(得分:1)

我同意@Ersoy的回答,但只是添加一些内容

我在推入时运行这些命令,而不是使用清除,而是重新缓存配置和路由。 尽管要记住,该route:cache并不适用于所有可能的路由,请参阅laravel文档。

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

composer install --no-dev