1
resposta

[Dúvida] Workers executando em multithread

Vinicius, boa tarde

cara, me veio uma duvida referente ao multithread do php com os workers.

Vamos supor que eu tenha que redimensionar 1k de fotos por hora (uma tarefa teoricamente complexa) , como poderia executar essas mensagens com multithread para agilizar os processos ? É possivel ? Ou o worker já executa as mensagens com multithread por baixo dos panos ?

1 resposta

E aí, Guilherme!

No PHP, essa parada de multithreading não é tão direta como em Python ou Java, saca? Tradicionalmente, o PHP é mais na pegada síncrona, tipo, uma instrução por vez. Mas relaxa, que o Symfony Messenger, que manda ver no processamento assíncrono, tem uns esquemas maneiros pra lidar com execução concorrente de mensagens, mesmo não sendo exatamente multithreading no sentido tradicional.

No Symfony Messenger, a execução assíncrona geralmente rola com filas de mensagens e workers. Cada mensagem na fila é processada de boa por um worker, mandando ver na execução concorrente das mensagens.

Só que multithreading é mais ligado a linguagens que têm Threads como entidades nativas, e PHP não é bem assim. Mas pra ter uma execução paralela na área, você pode usar processos separados ou extensões específicas. Só que no Symfony Messenger, não rola multithreading nativo do PHP.

Se a ideia é redimensionar umas mil fotos por hora de um jeito eficiente, dá pra explorar o "parallel processing" usando vários workers.