Laravel 5.7-在一定时间后杀死工匠

时间:2018-12-31 16:09:33

标签: php laravel

我正在开发一个import React, { Component } from 'react'; import Button from '@material-ui/core/Button'; import logo from './logo.svg'; import './App.css'; import Snack from './Snack.js'; class App extends Component { constructor(props) { super(props); this.snack = React.createRef(); } render() { return ( <div className="App"> <header className="App-header"> <img src={logo} className="App-logo" alt="logo" /> <h1 className="App-title">Welcome to React</h1> </header> <p className="App-intro"> To get started, edit <code>src/App.js</code> and save to reload. </p> <Button variant="contained" color="primary" onClick={this.handleHello}>Hello World</Button> <div> <Snack ref={ ref => this.snack = ref } /> </div> </div> ); } handleHello = () => { this.snack.test(); } } export default App; 应用程序。

我创建了一个应该设置数据库的命令:

laravel 5.7

我的问题是每个命令都需要花费几分钟才能完成。总的来说,我花了25分钟才能用数据填充整个数据库。

我希望每个命令仅运行1分钟,然后将其杀死。

有人建议如何在laravel命令中完成此操作吗?

1 个答案:

答案 0 :(得分:1)

我认为最好的方法是将这些命令提取到后台作业中。然后,该手工艺命令成为使该一个或多个新作业排队的代码。

为什么?通过覆盖这样的值,可以很容易地配置jobs to timeout after x amount of time

<?php

namespace App\Jobs;

class ProcessPodcast implements ShouldQueue
{
    /**
     * The number of seconds the job can run before timing out.
     *
     * @var int
     */
    public $timeout = 120;
}

此外,为什么还要刷新数据库?除非这纯粹是一个分析平台(根本没有用户数据),否则这似乎是个疯狂的主意。如果该刷新命令超时可能是一件坏事-您可以查看job chaining以便确保刷新命令成功执行,然后其他命令(现在是新作业)已设置超时。