gpt4 book ai didi

php - Laravel:并行运行 Artisan 命令

转载 作者:搜寻专家 更新时间:2023-10-31 21:02:26 32 4
gpt4 key购买 nike

我想同时并行运行 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 文件导入。然后像这样从 Controller 发送这个作业:

<?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 Queues

关于php - Laravel:并行运行 Artisan 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39417647/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com