processamento assíncrono PHP com beanstalkd. Você recomendaria isso?
-
06-07-2019 - |
Pergunta
que você recomendaria usando beanstalkd [ http://kr.github.com/beanstalkd/ ] para
processamento assíncrono em PHP?
Eu preciso algum feedback / comentários pros-contras, de qualquer pessoa que tenha usado este lib.
Obrigado,
Solução
Eu usei Beanstalk na produção, e também durante o teste jogou milhões de mensagens simples através dele - geralmente en-massa, mas o sistema de produção teve mais de 100.000 tarefas colocar através dela até que eu deixou a empresa. Ela ainda pode estar em execução, caso em que seria dezenas de milhões ser agora -. Ou mais, se tivessem estendido seu uso, ainda mais, como eu tinha planejado
Eu gostaria de recomendar, como ele tem uma série de excelentes pontos.
- tubos nomeados pode ser usado para limitar os trabalhos que estão sendo entregues. I assistir a um tubo com base no nome do host da máquina, o que limitava onde um trabalhador estaria funcionando -. Útil para arquivos enviados que só são armazenados em um servidor específico)
- Os atrasos podem ser usados ??para eventos set futuras
- As versões mais recentes do servidor também apoiar bin-logging, dando persistência, embora nunca tenha deixado de funcionar em mim.
A minha primeira tarefa Coloquei através dele era de processamento de imagem - e fazer isso fora do trabalho de um processo Apache / mod_php me permitiu redimensionar imagens maiores sem afetar o servidor (soprar o servidor web). Com uma fila levemente carregado, ele havia criado as miniaturas antes que a página tinha refrescado após o upload.
Existem muitas outras tarefas potenciais que também poderiam ser processados ??de forma assíncrona.
Os únicos problemas que tive foi certificando-se de que os trabalhadores concluídas sem incidentes - ou que quaisquer erros foram apanhados de modo que o trabalho poderia ser 'bury'ed, garantindo assim que o trabalho não foi colocado de volta na fila para ser executado novamente (e ter o acidente trabalhador de novo).
Tendo os trabalhadores também reiniciar a memória clara também pode ser útil como PHP é menos adequado para processos de longa duração.