2017-09-20 4 views
0

Je fournis un certain temps de calcul du service de calcul sur mon serveur pour les utilisateurs. Je mets ces travaux de calcul dans la file d'attente. J'ai donc besoin de montrer combien de tâches attendent l'utilisateur. Bien que je ne peux pas trouver un moyen d'obtenir combien d'emplois avant un travail spécifique dans la file d'attente laravel. J'ai utilisé beanstalkd comme file d'attente.Obtenir le nombre d'emplois avant un travail spécifique dans la file d'attente larvar

Répondre

1

Comme dans la réponse 'How can I get a list of all jobs in a beanstalk tube?', Beanstalkd n'est pas un tableau. Il n'est pas conçu pour être cherché ou compté à l'intérieur, juste pour obtenir le prochain travail à travailler.

Si vous souhaitez connaître le nombre de travaux dans la file d'attente et où ils se trouvent dans la commande, notez ces informations ailleurs dans une autre banque de données, par exemple Redis ou memcached. Faites une entrée lorsque vous placez le travail dans la file d'attente et supprimez-le lorsque le travail a été supprimé de Beanstalkd. Remarque: cette 'commande' ou 'séquence' ne sera valide que si tous les travaux ont la même priorité, et vous garderez les deux systèmes en parfaite synchronisation. Certaines choses que vous pourriez raisonnablement faire est de prendre en compte le nombre total de travaux dans la file d'attente (ou un tube/file d'attente particulier), et si les travaux sont globalement similaires dans le temps qu'ils devraient prendre, offrez une estimation de combien de temps il faudrait jusqu'à ce qu'un nouvel emploi (ou le nouvel emploi que vous venez de mettre en place) prenne jusqu'à ce qu'il soit terminé.

Vous pouvez aider à calculer un ETA avec un travail spécial qui a un temps createdAt, et lors de son exécution, il met à jour le temps pris dans la file d'attente (now-createdTime) vers un magasin externe.