【问题标题】:Laravel - How to start artisan automatically only once?Laravel - 如何只自动启动一次工匠?
【发布时间】:2018-03-09 20:41:02
【问题描述】:

如果我有一些工匠命令并且只想触发一次事件,是否可以仅在 HTTP 首次启动时运行?

注意:有 while 循环,所以它应该可以作为 shell sh 脚本(不是通过浏览器)很好地运行,比如没有返回数据的 exec() 命令。

我使用 posix_getpgrp() 找到了解决方案,并与 cache::forever var 进行了比较。如果与调用事件不同,则永久删除缓存。即使重启apache服务也永远缓存记得。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    您可以使用

    从您的应用中调用工匠命令
    Artisan::call('your-command',array());
    

    例如,要创建架构,我将使用路由 /create-schema,然后在方法中我将拥有类似的内容

    public function createSchema()
    {
        Artisan::call('migrate:install');
        Artisan::call('migrate');
    }
    

    【讨论】:

    • 但是,如果第一次加载应用程序时只执行一次,如何执行?放到start/目录里面?
    【解决方案2】:

    找到解决方案。使用事件侦听器并检查是否将数据存储到会话中,然后如果未设置,则调用一次脚本,存储被调用的缓存数据。如果你重启 apache 或者想强制调用脚本改变你的缓存数据。

    你需要的是结合:

    Cache

    Events

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 1970-01-01
      • 2020-10-08
      • 2011-12-20
      • 2015-06-07
      相关资源
      最近更新 更多