如何在Laravel中只有一段代码才能运行一次?

时间:2015-12-03 08:08:15

标签: laravel deployment webhooks

有没有办法确保一段代码只运行一次?像数据库迁移这样的东西?

我有以下情况:

我更改了系统,以便在新用户注册后附加新的webhook。在将其部署到生产服务器之后,我想将相同的webhook附加到每个现有用户。

我可以编写一个artisan命令并手动运行它或将其添加到部署脚本中。但该命令只会使用一次。我不希望没有"不必要的"之后我的项目中的命令。

我也可以使用" artisan tinker"并在那里添加我的PHP,但这并不是很好,请记住这是一个生产服务器。

我有什么选择?

通常的做法是什么?

有没有办法让一块"一次性"码?

谢谢

1 个答案:

答案 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).

控制台更安全,您可以在控制台中运行更长的运行过程,因为您不会像在浏览器中那样超时。

对我来说,控制台命令是我以前做过的方法。您可以在维护模式下运行控制台命令,这甚至更好。

希望这会给你一些想法