php不等待接口全部执行返回,php – 如何在不等待结束执行的情况下执行多个artisan命令?...

我有大量的数据要快速处理并充分利用我的服务器.所以,我创建了一个父工匠命令和一个儿童工匠命令.

父工匠命令:从数据库获取值,执行所有类型的计算,将数据划分为块并使用以下代码执行子工匠命令的多个实例.

foreach($arrayOfData as $chunk){ // $arrayOfData is an array of Chunks

$this->call('process:data',[

'data' => $chunk // Chunk is an array containing data

]);

$this->info('Chunk Processed');

}

但它等待一个实例停止执行,这意味着它不会立即执行我想要的多个子工匠命令实例!我知道以这种方式调用它将等待一个child artisan命令的实例停止执行.有没有办法可以执行多个子artisan命令实例而无需等待一个实例停止执行?

我已经搜索了不同的方法来执行此操作,我可以使用exec()和类似的函数执行子工匠命令,但它也会返回一些我的代码将等待的退出代码.

通过一次只执行2个实例,我可以将处理数据所需的时间除以2.我希望一次执行3个实例!有没有办法做到这一点?

更多信息

Child artisan命令:获取数据数组并对其进行处理.基本上,它会更新数据库中给定数据的一些信息.

解决方法:

Using the queue method on the Artisan facade, you may even queue Artisan commands so they are processed in the background by your queue workers. Before using this method, make sure you have configured your queue and are running a queue listener

foreach($arrayOfData as $chunk){ // $arrayOfData is an array of Chunks

$this->queue('process:data',[

'data' => $chunk // Chunk is an array containing data

]);

}

如果您不熟悉队列,请从here开始.

标签:php,laravel,laravel-5,artisan

来源: https://codeday.me/bug/20190622/1263203.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值