Há algumas coisas a serem notadas sobre as filas persistentes no Gearman. Primeiro, as filas persistentes são usadas apenas para trabalhos em segundo plano. Isso significa que se o job tiver um cliente conectado (ou seja, bloquear), a fila persistente não será usada (, portanto, se você estiver testando isso em um exemplo típico de hello-world / reverse-string diretamente, você ganhou) Não vejo nada na fila ).
Do manual do técnico de equipe ( mencionado acima ).
The persistent queue is only enabled for background jobs because foreground jobs have an attached client. If a job server goes away, the client can detect this and restart the foreground job somewhere else (or report an error back to the original caller). Background jobs on the other hand have no attached client and are simply expected to be run when submitted.
Em segundo lugar, o gearman mantém uma fila na memória nativamente, mas retornos de chamada são usados para encaminhar / remover tarefas da fila persistente conforme necessário (caso o servidor de tarefas fique inativo), portanto existe a possibilidade de o trabalho ser concluído antes de você poderia buscar qualquer coisa do servidor do memcached?
Você poderia testar isso mais concretamente executando um trabalho de teste com, digamos, sleep(100)
ou algo semelhante, e é possível que você consiga verificar o memcached dessa maneira enquanto o trabalho ainda está em execução.
Note também que existem alguns bugs conhecidos no gearmand com o tipo-de-libmemcached em algumas distros como Debian (pelo menos que eu saiba) onde ele tem algumas condições de corrida. Você pode tentar executar o comando gearmand com --verbose DEBUG
para esses.