我有大量数据需要快速处理并充分利用我的服务器。所以,我创建了一个父工匠命令和一个儿童工匠命令。
父工匠命令:从数据库中获取值,执行所有类型的计算,将数据划分为块并使用以下代码执行子工匠命令的多个实例
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命令的实例停止执行。有没有办法可以执行child artisan command
的多个实例而无需等待一个实例停止执行?
我已经搜索了不同的方法来执行此操作,我可以使用exec()
和类似函数执行子工匠命令,但它也会返回一些我的代码将等待的退出代码。
通过一次只执行2个实例,我可以将处理数据所需的时间除以2.我希望一次执行3个实例!有没有办法做到这一点?
更多信息
儿童工匠命令:获取数据数组并对其进行处理。基本上,它会更新数据库中某些给定数据的信息。