2016-06-07 5 views
0

Laravel 5.2에서 동일한 장인 작업을 병렬로 실행하도록 예약하려고합니다.Laravel - 동일한 장인 작업을 병렬로 실행하도록 예약하는 방법은 무엇입니까?

for ($j = 0; $j < 10; $j++) { 
     $schedule->command('foo:bar --option=' . $j) 
      ->dailyAt("1:00"); 
    } 

을 그리고 그 foo는 발견 : 처음에는 Kernel.php에 for 루프에서 $schedule->command을 넣어 줄이 실제로 직렬 방식으로 하나 하나를 실행합니다. 다음 명령은 이전 명령이 완료 될 때 시작됩니다. 다음과 같이

그때 나는 ps aux와 우분투에서이 옵션을 선택하면
$schedule->call(function(){ 
     for ($j = 0; $j < 10; $j++) { 
      Artisan::queue('foo:bar', [ 
       '--option' => $j 
      ]); 
     } 
    })->dailyAt(1:00); 

, 나는 두 가지 작업 대신 10 개 작업을보고, 코드를 변경했습니다. 내가 놓친 게 있니? 동시에 동일한 Artisan 작업을 병렬로 실행하도록 예약하는 가장 좋은 방법은 무엇입니까? 감사.

답변

2

Supervisor를 사용하여 대기중인 작업을 관리하면 한 번에 둘 이상의 작업을 실행할 수 있습니다. 나는 그들을 대기열에 쌓은 후 초당 하나씩 이메일을 지켜 보는 고통스런 오후 이후 이것을 배웠습니다! 이 때문에의

[program:mylaravelappnamequeue] 
command=php /var/www/html/mylaravelappname/artisan queue:listen --tries=1 
directory=/var/www/html/mylaravelappname 
stdout_logfile=/var/www/html/mylaravelappname/storage/logs/supervisord.log 
redirect_stderr=true 
autostart=true 
autorestart=true 
numprocs = 10 
process_name = %(program_name)s%(process_num)s 

신용 (/etc/supervisor/conf.d/{appName}.conf에서)

내 conf의 파일 : https://laracasts.com/discuss/channels/general-discussion/how-to-speed-up-queues

예,이 "true"로하지 않습니다 병렬하지만 대기열을 훨씬 빠르게 실행합니다! 일부 서식

: 또한, 당신은, 당신은 4

편집 같은 것을 아래로 numprocs을 설정하는 예비 할 수 있습니다 얼마나 많은 RAM 확인

관련 문제