Olá, pequeno Kangaroo, como vai? Você conhece a extensão ImageMagick do PHP e sabe para que ela serve? Se ainda não sabe, não se preocupe, neste artigo vamos te falar um pouco sobre ele, e te passar uma dica que pode salvar muitas hospedagens, que é como limitar os threads dessa ferramenta.
O que é e para que serve a ImageMagick
Basicamente, a extensão ImageMagick do PHP te permite criar, editar, converter imagens e algumas outras funções, em outras palavras, essa extensão te permite, de certa forma, “manusear” imagens que você está usando nas suas aplicações. Porém, note que essa não é uma ferramenta que você abre e executa as ações, ela é uma extensão que permite que suas aplicações e hospedagem consigam realizar esse tipo de ação.
Por exemplo, se você possui um site WordPress, ao subir uma imagem para a biblioteca, ele por padrão redimensiona as imagens, de forma a otimizar e ter vários tamanhos para usar em algumas situações no site. Além do próprio WordPress, alguns plugins de otimização de imagem também podem requisitar essa extensão.
Problemas com threads ilimitados
Porém, há situações relatadas onde a extensão acabou esgotando os recursos da hospedagem, possivelmente ao tentar converter tipos de imagem mais pesadas, o ImageMagick pode tentar alocar mais recursos do que há disponível na hospedagem, resultando no esgotamento com erros 503.
Uma possível solução para isso é limitar os threads da extensão, fazendo com que, embora converta mais lentamente, evite travamentos ou esgotamento de recursos, podendo até mesmo evitar que seu site fique fora do ar. Abaixo mostramos como criar esse limitador.
Como limitar os threads
- Acesse o painel de controle da sua hospedagem (cPanel)
- Já no painel, acesse a opção Gerenciador de Arquivos
- Acesse o diretório do site que você deseja limitar os threads, o diretório do domínio principal é o public_html
- Aqui, procure pelo arquivo wp-config.php, clique com o botão direito e depois em Edit
- Dentro do arquivo, de preferência logo no início, adicione o código
putenv('MAGICK_THREAD_LIMIT=1');, como no exemplo abaixo: - Feito isso, clique em Salvar as alterações no canto superior direito
E pronto, ao fazer isso, agora você definiu que a extensão pode no máximo utilizar 1 thread, porém, note que é essencial colocar esse valor mais baixo, pois ele é definido para cada ação da extensão. Por exemplo, se você estiver otimizando 5 imagens de uma vez, e aumentar esse valor para 4, ele pode só nesse processo consumir 20, já sendo um número bem elevado.