我想同时并行运行artisan命令,这是我的代码:
$files = glob($this->fixedDir . '*.csv');
foreach ($files as $csvFile) {
Artisan::call('mycommand:import', ['--file' =>$csvFile]);
}
所以想法是传递文件选项然后每个命令处理它。但是,上面的代码顺序运行每个命令不是并行的。我也尝试过这样:
$schedule = new Schedule();
$files = glob($this->fixedDir . '*.csv');
foreach ($files as $csvFile) {
$schedule->command('mycommand:import', ['--file' =>$csvFile])
->everyMinute()
->withoutOverlapping();
}
即使这似乎也不起作用。
有人可以告诉我如何并行运行命令吗?
答案 0 :(得分:2)
您可能希望使用作业和队列。
do.call
然后编辑您的作业类以处理您的csv文件导入。然后从这样的控制器发送此作业:
splat <- function(f,v) {
do.call(f, as.list(v))
}
splat(func2, c(10,121))
确保您的工作进程正在运行。你可以这样开始:
php artisan make:job ImportCsv
您可以从文档中了解详细信息; Laravel Queues