2016-09-09 5 views
2

のRun職人コマンド私は並行して同時に職人のコマンドを実行したい、ここに私のコードは次のとおりです。Laravel:パラレル

$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(); 
} 

それでも動作していないようです。

誰かがどのようにコマンドを並行して実行できますか?

答えて

2

これにジョブとキューを使用することができます。

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 Queues