有没有办法确保一段代码只运行一次?像数据库迁移这样的东西?
我有以下情况:
我更改了系统,以便在新用户注册后附加新的webhook。在将其部署到生产服务器之后,我想将相同的webhook附加到每个现有用户。
我可以编写一个artisan命令并手动运行它或将其添加到部署脚本中。但该命令只会使用一次。我不希望没有"不必要的"之后我的项目中的命令。
我也可以使用" artisan tinker"并在那里添加我的PHP,但这并不是很好,请记住这是一个生产服务器。
我有什么选择?
通常的做法是什么?
有没有办法让一块"一次性"码?
谢谢
答案 0 :(得分:1)
我现在明白了,在这里给你一个答案。
您有多种方法可以做到这一点。如果它是一个真正快速的diry事情你需要做的为什么不只是创建一个tmp控制器和一个路由并在那里执行您的查询。例如。
class UpdateController extends Controller
{
public function users()
{
.. Do my SQL here
}
}
// Routes
get('update/users', 'UpdateController@users');
您可以运行该代码,然后更新,然后清理并删除。
如果它的运行时间较长,我会创建一个控制台命令,即
app:update --flag (maybe for method you have added).
控制台更安全,您可以在控制台中运行更长的运行过程,因为您不会像在浏览器中那样超时。
对我来说,控制台命令是我以前做过的方法。您可以在维护模式下运行控制台命令,这甚至更好。
希望这会给你一些想法