2017-08-22 1 views
0

J'ai un problème comment vérifier si un travail est terminé ou non. Je regarde partout mais je ne vois pas que Laravel/Lumen a quelque chose à travailler, j'en manque probablement. Exemple de code:Laravel JobId comment l'utiliser pour vérifier si le travail est terminé

$job = ((new FooJob($data))); 
$jobID = dispatch($job); 

if(is_numeric($jobID)) { 
    while(elapsedTime < 10sec) { 
    CHECK_JOB_SOMEHOW_IF_IS_DONE !?! 
    } 
} 

J'ai installé https://github.com/gilbitron/laravel-queue-monitor qui est vraiment aider, pour sauvegarder les données sur les travaux terminés. Là je ne vois rien non plus.

J'ai un framework Lumen 5.4.

Répondre

0

Je mets cette solution:

Quand Job se fait à la fin de Job :: Handle je mets Redis creux une marque, pour ce travail spécifique (set redis key "job: [ID_JOB]" val 1) et que dans la partie request, je vérifie cette touche Redis quand elle apparaît, et c'est tout. Ça fonctionne bien.

Une autre solution serait par le biais du système d'événement de lumen/laravel, pour faire une marque Redis, mais pour ce que je veux, il semble un peu exagéré.

0

Vous aurez besoin de créer les tables de jobs et de jobs_failed selon la documentation Queues - Lumen.

Il sera nécessaire de créer le queue.php fichier dans le dossier de l'application /config, suit le modèle de fichier:

return [ 
    'default' => env('QUEUE_DRIVER', 'sync'), 
    'connections' => [ 
     'sync' => [ 
      'driver' => 'sync', 
     ], 
     'database' => [ 
      'driver' => 'database', 
      'table' => 'jobs', 
      'queue' => 'default', 
      'retry_after' => 60, 
     ], 
    ], 
    'failed' => [ 
     'database' => env('QUEUE_CONNECTION', 'mysql'), 
     'table' => 'jobs_failed', 
    ], ]; 

Après avoir créé les tables, en utilisant la méthode le répartiteur les informations seront sauvegardées dans la table des jobs.

Pour traiter la file d'attente, utilisez la commande php artisan queue:work

+0

Ce n'est en fait pas un problème que j'ai, toutes les choses pour la queue fonctionnent :) C'est juste un problème de vérification. – xDan