J'ai créé un script PHP qui se lit à partir de BeansTalkd et traite les travaux. Pas de problèmes là-bas. P>
La dernière chose à faire est d'écrire un script init pour cela, il peut donc fonctionner comme un service. P>
Cependant, cela a soulevé une autre question pour moi. Lorsque vous essayez d'arrêter le service, la seule façon évidente de le faire serait d'essayer de tuer le processus. Cependant, si je le fais, quel sera le travail, si le script PHP était à mi-chemin du traitement? Donc, le travail était réservé, mais le script n'a jamais réussi ni échoué (à supprimer ou à enterrer respectivement), que se passe-t-il? P>
Je suppose que le TTR expirera, puis il est remis à la file d'attente Ready? p>
et bonus 2nd question, toute astuce sur la meilleure façon de gérer l'arrêt du service PHP? P>
3 Réponses :
Tout travail qui manque de temps et n'est pas enterré ou toucher code> est de retour dans la file d'attente REAIS pour être réservée. P>
Merci pour la réponse Alister! J'ai déjà commencé avec une commande "sortie" à envoyer, afin de mettre fin à un travailleur. Vaut probablement la peine d'être examinée dans le Supervisord, car au moment où ma manipulation de processus se sent un peu fragile!
Lorsqu'un processus de travail (client BeansTalk) ouvre une connexion avec BeanStalkd et réserve un emploi, le travail sera dans l'état "réservé" jusqu'à ce que le client permet de supprimer / publier la commande (ou) les moments de travail. P>
Dans le cas où, si le processus de travailleur se termine brusquement, sa connexion avec BeanStalkd sera fermée et que le serveur publie immédiatement tous les travaux réservés à l'aide de cette connexion particulière. P>
Si votre travail est trop précieux pour perdre, vous pouvez également utiliser PCNTL pour attendre que le travail finisse puis redémarrer / arrêter votre travailleur. J'ai réussi à gérer tous les signaux PCNTL appropriés pour libérer le travail en tube. p>