[英]Laravel: Run Artisan Commands in Parallel
我想同时并行运行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();
}
即使这似乎也不起作用。
有人可以告诉我如何并行运行命令?
您可能希望使用作业和队列。
php artisan make:job ImportCsv
然后编辑您的作业类以处理您的csv文件导入。 然后从这样的控制器调度此作业:
<?php
namespace App\Http\Controllers;
use App\Jobs\ImportCsv;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class FileController extends Controller
{
/**
* Store a new file.
*
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
// Create file...
dispatch(new ImportCsv($file));
}
}
确保您的工作进程正在运行。 你可以像这样开始:
php artisan queue:work
您可以从文档中了解详细信息; Laravel队列
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.