2012-09-24 5 views
7

Come è possibile elencare tutti gli handle di lavoro su un job server Gearman? Sto cercando un approccio di monitoraggio, in cui posso elencare tutti i thread in esecuzione e interrogarne il loro stato.Elenco maniglie di lavoro Gearman

L'elencazione dei lavori in esecuzione con 'stato' e 'lavoratori' (come descritto in http://gearman.org/index.php?id=protocol) elenca le funzioni e gli operatori, ma non gestisce alcun lavoro. L'handle di lavoro è necessario per fare GET_STATUS, ecc.

Sto provando a disaccoppiare il processo di invio dal monitoraggio, e quindi non ho l'handle di lavoro che viene restituito nel pacchetto JOB_CREATED.

+0

Hai mai trovato una soluzione? Voglio fare essenzialmente la stessa cosa: inviare lavori in background e lasciare che altri processi separati li monitorino/raccogliere i risultati in un tempo indefinito in futuro. Sto considerando di inviare l'id della maniglia come un lavoro separato per facilitare questo. – goat

+0

Sfortunatamente no - Sono bloccato a dover salvare l'handle del lavoro dal lavoro Invia risposta –

+0

Puoi salvare il lavoro Gestisci? Si potrebbe anche solo creare una tabella db chiamata job ... aggiungere una riga, ottenere l'id dall'azione insert e avviare il lavoro gearman in background incluso l'id nei dati. Nel lavoro gearman aggiorna il db dopo ogni azione. Quindi lo script del tuo monitor continua a controllare il db ... puoi persino creare un servizio JSON per monitorare i lavori di gearman. Non sono sicuro se ci sia un metodo nativo per il cambio di marcia, dato che non ho molta dimestichezza con il Gearman, tuttavia questo potrebbe essere più facile forse e consente anche che venga utilizzato da qualsiasi piattaforma indipendentemente dal supporto per Gearman. – user1641165

risposta

1

Ci sono un sacco di manager Gearman là fuori,

https://github.com/brianlmoon/GearmanManager è un intero pacchetto per la gestione e la visualizzazione.

o https://github.com/yugene/Gearman-Monitor

O quello che uso per monitorare https://github.com/liorbk/php/blob/master/GearmanTelnet.php

+0

Penso che tu abbia frainteso la domanda. Tutti gli approcci che descrivi utilizzano l'interfaccia di amministrazione, che invia comandi "status" e "worker". L'output di questi non fornisce quello che sto cercando. –

+1

Sì, mi dispiace, vedo il problema ora. Ho dato un'occhiata a http://www.php.net/manual/en/class.gearmantask.php e all'impostazione delle funzioni di richiamata, ad es. Http://www.php.net/manual/en/gearmanclient.setstatuscallback .php ma anche non penso che questi rispondano alla tua domanda. scusate –