Array
(
)

PHP pthreads + gearman

PHP
Wellington Silva
   - 30 abr 2016

Boa noite,
Desenvolvi uma aplicação utilizando PHP e Gearman.
Funciona da seguinte maneira:
Envio uma requisição para o servidor, o qual ira buscar informações em um webservice e fazer o parse do resultado, esse processo pode demorar dependendo da quantidade de requisições para esse webservice.
Para resolver o problema do navegador do cliente não ficar aguardando até esse processo concluir, utilizei o Gearman para trabalhar de forma assíncrona.
Até ai beleza, funcionou perfeitamente. Porém se colocarmos junto 10 clientes fazendo requisições para o servidor vai caindo na fila de processos e só vai tratar a próxima requisição quando concluir a primeira, e isso seria inviável pois pode chegar até 1 dia para poder finalizar toda fila.
Pesquisando, descobri o pthreads uma extensão que permite o php trabalhar em multithread, ou seja, dependendo da capacidade do servidor, ele pode tratar 4 ou mais requisições ao mesmo tempo, assim diminuiria o tempo para concluir a fila de processo.
O problema:
Estou a uma semana tentando compilar no linux o php para funcionar com pthreads, mais como não tenho muito conhecimento, não estou conseguindo chegar no resultado esperado.
A exigência da extensão pthreads seria o PHP trabalhar no modo Thread Safe, no windows consegui habilitar o pthread, mais não consegui o Gearman.
e como a aplicação ficará hospedado em linux, preciso fazer isso funcionar.
Preciso de ideias, ou para contornar o uso do pthreads ou então fazer funcionar esse pthreads e resolver meu problema.

Wellington Silva
   - 01 mai 2016

Descobri a solução, na verdade estava na minha cara, e não enxerguei..

Era apenas instanciar mais de 1 vez o worker do gearman, assim ele trabalha em modo multithread.
Quanto mais worker em execução, mais serviços em paralelo ele vai executar!

Fica a dica!

0
|
0