在生产 laravel 网站上 运行 php artisan :clear 命令可以吗?
Is it okay to run php artisan :clear commands on a production laravel website?
我在 DigitalOcean NGINX 服务器上托管了一个生产 Laravel 网站,每次我 git 推送新更新时,我总是 运行 以下内容命令:
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
composer dump-autoload
这是一个好的做法,还是 运行在我的服务器上执行这些命令会导致问题?
除 cache
之外的所有 clear
都可以成为部署脚本的一部分。
但是 运行 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
Delete all the keys of the currently selected DB. This command never fails.
编辑:如果他们使用相同的 redis 驱动程序+相同的主机但不同的数据库,那么这可能不会导致副作用问题,但需要手动配置为不同的组件设置不同的数据库。
我同意@Ersoy 的回答,但只是想补充一些东西
我 运行 推送这些命令,而不是使用 clear,我重新缓存配置和路由。
请记住,route:cache 并不适用于所有可能的路线,请参阅有关该内容的 laravel 文档。
php artisan config:cache
php artisan route:cache
php artisan view:clear
composer install --no-dev
我在 DigitalOcean NGINX 服务器上托管了一个生产 Laravel 网站,每次我 git 推送新更新时,我总是 运行 以下内容命令:
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear
composer dump-autoload
这是一个好的做法,还是 运行在我的服务器上执行这些命令会导致问题?
除 cache
之外的所有 clear
都可以成为部署脚本的一部分。
但是 运行 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
Delete all the keys of the currently selected DB. This command never fails.
编辑:如果他们使用相同的 redis 驱动程序+相同的主机但不同的数据库,那么这可能不会导致副作用问题,但需要手动配置为不同的组件设置不同的数据库。
我同意@Ersoy 的回答,但只是想补充一些东西
我 运行 推送这些命令,而不是使用 clear,我重新缓存配置和路由。 请记住,route:cache 并不适用于所有可能的路线,请参阅有关该内容的 laravel 文档。
php artisan config:cache
php artisan route:cache
php artisan view:clear
composer install --no-dev