我在DigitalOcean NGINX服务器上托管了一个生产Laravel网站,每当我git推送新更新时,我总是运行以下命令:
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
composer dump-autoload
这是一种好习惯,还是在服务器上运行这些命令会导致问题?
除clear
之外的所有cache
都可以作为部署脚本的一部分。
但是在生产中运行php artisan cache:clear
极具风险,并且会导致意外结果,例如丢失所有关键数据。
假设您的缓存驱动程序,队列驱动程序,会话驱动程序为redis
,它们都共享相同的Redis实例(同一主机)。当您执行cache:clear
时,它将执行以下方法
/**
* Remove all items from the cache.
*
* @return bool
*/
public function flush()
{
$this->connection()->flushdb();
return true;
}
它正在执行redis的flushdb
命令。如果它们在同一个数据库中,它将刷新所有用户,所有排队的作业,所有缓存的项目,所有与广播相关的代码的会话。这是method
删除当前所选数据库的所有键。此命令永远不会失败。
我同意@Ersoy的回答,但只是添加一些内容
我在推送时运行这些命令,而不是使用清除,而是重新缓存配置和路由。尽管要记住,该route:cache并非适用于所有可能的路由,请参阅laravel文档。
php artisan config:cache
php artisan route:cache
php artisan view:clear
composer install --no-dev