2017-07-12 2 views
1

J'essaye de configurer larvar tâche schedular, je priting nombres de 0 à l'infini pour juste tester pourquoi sansoverlapping() ne fonctionne pas.Laravel sansoverlapping() ne fonctionne pas même si le nom est utilisé pour la tâche

Mon code:

protected function schedule(Schedule $schedule) 
{ 
    $schedule->call(function (Request $request) 
    { 
     $i=0; 

     while(1) 
     { 
       echo $i."-"; 
       sleep(3); 
       $i++; 
     } 
    })->everyMinute()->name('mailfetch')->withoutOverlapping(); 
} 

Si mon schedular est en cours d'exécution et je suis en train d'exécuter un autre schedular alors qui ne devrait pas exécuter, mais dans mon cas, les deux schedulars commencer à courir et commencer à données priting.

Sortie:

enter image description here

Tout semble correct mais ne sais pas pourquoi » est que cela se produise.

+0

Juste essayer de supprimer '-> everyMinute()' et test, il sera toujours courir evry minute pour test qui rendent compte juste trois pour voir si ça va recommencer !! – Maraboc

+0

J'ai supprimé '-> everyMinute()' mais il est toujours en cours d'exécution même si la tâche précédente est déjà en cours d'exécution – dollar

Répondre

0

Il ne chevauchera pas seulement si vous les lancez dans la même minute. Parce que, vous avez dit à votre processus: "commencer une boucle infinie chaque minute". Ainsi, lorsque vous exécutez votre nouvelle instance, vous êtes peut-être dans une nouvelle minute.

Si vous voulez essayer quelque chose de chevauchement, vous pouvez essayer:

$schedule->call(function (Request $request) { 
    echo 'start'; 
    sleep(120); 
    echo '- end'; 
})->dailyAt('13:00')->withoutOverlapping(); 
+0

mais je vois la documentation laravel (https://laravel.com/docs/5.4/scheduling#preventing-task-overlaps), il dit que pour empêcher l'exécution d'une autre tâche si déjà il en exécute un – dollar

+0

Mais seulement s'il exécute le même. –

+0

voir J'ai exécuté la même tâche deux fois dans la même minute, mais toujours les deux impriment les valeurs en même temps, vérifiez cela http://prntscr.com/fuqrkm – dollar