PHP
O PHP (Hypertext Preprocessor) é uma linguagem de script de código aberto que é especialmente adequada para o desenvolvimento web. Ele é executado no lado do servidor, processando o código no servidor web antes de enviá-lo ao cliente (navegador). O WordPress é construído em PHP; portanto, ele é essencial para sites WordPress. O PHP permite que seu site WordPress:
- Gere conteúdo dinâmico e o exiba em tempo real.
- Interaja com o banco de dados, permitindo buscar e armazenar dados.
- Gerencie formulários e processe entradas de usuários, tornando os sites WordPress mais interativos.
- Utilize temas e plugins para estender as capacidades principais do WordPress.
- Melhore o desempenho, garantindo que grande parte do trabalho pesado ocorra no servidor web antes de o conteúdo chegar ao navegador do usuário.
Como o PHP é processado
Quando um visitante visita uma página sem cache ou executa uma ação em uma página (por exemplo, adicionar algo a um carrinho, enviar um formulário, etc.), ocorre o seguinte processo:
- O servidor web (Nginx aqui na Kinsta) recebe a solicitação.
- O Nginx passa a solicitação para o PHP, que é atribuído a um thread PHP disponível.
- O thread PHP executa o script PHP (por exemplo, obtendo dados do banco de dados ou processando formulários).
- Durante o processamento, o thread PHP usa uma parte da memória do servidor até o limite de memória PHP definido na Kinsta.
- Se houver vários visitantes simultâneos, cada solicitação será atribuída a um thread PHP diferente. Se todos os threads estiverem ocupados, as solicitações adicionais aguardarão até que um thread fique disponível.
- O PHP então gera uma página HTML usando os arquivos PHP do tema (e quaisquer arquivos de plugins, se aplicável).
- O PHP entrega a página HTML renderizada de volta ao servidor web.
- A página é exibida para o visitante.
Se o seu site não utiliza cache ou não está otimizado, os threads PHP podem permanecer ocupados por mais tempo, o que pode degradar o desempenho e levar a timeouts ou erros 503 e 504 quando os visitantes acessam o site. Para mais informações sobre como verificar o desempenho do PHP e otimizar os threads PHP, consulte Desempenho do PHP.
Threads PHP
Os threads PHP (anteriormente conhecidos como PHP workers) são processos PHP individuais responsáveis pelo tratamento das solicitações recebidas em seu site. Cada thread processa uma solicitação por vez, ou seja, se você tiver dois threads, somente duas solicitações poderão ser processadas simultaneamente.
Quando um thread PHP termina de processar uma solicitação (por exemplo, renderizar uma página ou buscar dados de um banco de dados), ele fica livre para lidar com a próxima.
Os threads PHP são especialmente importantes quando um site não consegue ou não armazena a maior parte de seu conteúdo em cache. Quanto mais dinâmico for um site, mais threads PHP ele provavelmente precisará. Conteúdo em cache não exige threads PHP; eles são necessários apenas quando o site precisa consultar o banco de dados para obter ou alterar informações. Um site otimizado processa as solicitações rapidamente, liberando os threads PHP para a próxima solicitação na fila.
Para obter informações sobre como otimizar seus threads PHP, consulte Desempenho do PHP.
Planos Kinsta e threads PHP
A tabela a seguir mostra o pool PHP padrão, a contagem de threads e a memória por thread que são incluídos por padrão em cada plano na Kinsta:
Plano | Tamanho do pool | Contagem de threads | Memória por thread |
---|---|---|---|
Single 35k | 512 MB | 2 | 256 MB |
Single 65k | 1 GB | 4 | 256 MB |
Single 125k | 1.5 GB | 6 | 256 MB |
Single 315k | 1.5 GB | 6 | 256 MB |
Single 500k | 2 GB | 8 | 256 MB |
Single 750k | 2 GB | 8 | 256 MB |
WP 2 | 512 MB | 2 | 256 MB |
WP 5 | 1 GB | 4 | 256MB |
WP 10 | 1 GB | 4 | 256 MB |
WP 20 | 1.5 GB | 6 | 256 MB |
WP 40 | 1.5 GB | 6 | 256 MB |
Você pode alterar o número de threads PHP para cada site em Sites WordPress > nome do site > Informações > Desempenho do PHP > Alterar.
No momento, os planos a seguir não têm acesso ao recurso de desempenho do PHP ou pools de PHP. No entanto, eles incluem o seguinte número de threads PHP por padrão:
Plano | Threads de PHP por site |
---|---|
Single 1.25M | 10 |
Single 1.9M | 12 |
Single 2.5M | 14 |
Single 3,15M | 16 |
WP 60 | 8 |
WP 80 | 10 |
WP 120 | 12 |
WP 150 | 14 |
Agency 20 | 6 |
Agency 40 | 6 |
Agency 60 | 8 |
Limite de memória do PHP
O limite de memória do PHP define a quantidade máxima de memória (RAM) que cada thread PHP pode usar ao processar uma solicitação.
Esse limite é crucial porque os scripts PHP (especialmente no WordPress) geralmente precisam lidar com tarefas que exigem muita memória, como grandes consultas a bancos de dados, uploads de mídia ou cálculos complexos.
Se um script exceder o limite de memória definido, isso resultará em um erro (por exemplo, “Allowed memory size exhausted”). Isso evita que um script consuma recursos excessivos do servidor.
Planos Kinsta e memória PHP
O limite de memória padrão da Kinsta é de 256MB para os planos Single 35k, 65k, 125k, 315k, 500k e 750k, e WP 2, 5, 10, 20 e 40, o que é mais do que suficiente para a maioria dos plugins e sites WordPress. Os planos Single 1.25M, 1.9M, 2.5M e 3.15M, WP 60, 80, 120 e 150, e Agency 20, 40 e 60 têm um limite de memória de 512MB. Esse limite existe para evitar que os scripts PHP consumam memória excessiva. Se você definir um limite muito alto, um script mal configurado ou quebrado poderá causar problemas sérios por consumir muita memória.
Você pode alterar o limite de memória PHP de um site em Sites WordPress > nome do site > Informações > Desempenho do PHP > Alterar.
Interação entre threads PHP e memória
O número de threads do PHP não deve ser confundido com o limite de memória do PHP. Os threads PHP são processos PHP individuais que lidam com solicitações web recebidas, enquanto o limite de memória do PHP especifica a quantidade máxima de memória (RAM) que um único script PHP pode usar durante a execução.
Os threads PHP gerenciam a concorrência processando várias solicitações simultaneamente, enquanto o limite de memória do PHP gerencia a alocação de recursos, restringindo o uso de memória de scripts individuais. Isso impede que um único script use toda a memória disponível do servidor.
Os limites de memória do PHP são importantes para scripts que exigem muita memória, como os que realizam grandes consultas a bancos de dados, lidam com grandes uploads de arquivos ou executam cálculos complexos. Se você encontrar erros de limite de memória em seu site, aumentar o número de threads PHP não resolverá esse problema. Em vez disso, você deve aumentar a memória por thread em Sites WordPress > nome do site > Informações > Desempenho do PHP > Alterar.
Interação entre threads PHP, CPU e RAM
Quando você adiciona threads PHP, os recursos de CPU e RAM devem ser levados em conta. Se você aumentar o número de threads PHP, mas o servidor precisar de mais CPU e RAM para dar suporte a esses threads, isso criará um gargalo porque as solicitações não serão tratadas com eficiência.
Aqui na Kinsta, cada contêiner LXD personalizado é configurado com 12 CPUs e 8 GB de RAM. Além disso, ao usar máquinas virtuais C2 e C3D otimizadas para computação, equipadas com as CPUs mais rápidas do Google Cloud, ajudamos os threads PHP do seu site a serem executados com mais eficiência. Nossa infraestrutura dimensionável garante que os threads PHP do seu site WordPress tenham recursos de CPU suficientes para operar com desempenho máximo.
Valores padrão do PHP
Como um serviço gerenciado de WordPress, a Kinsta tem as configurações ideais de PHP configuradas para funcionar melhor com sites WordPress. Se você tiver requisitos específicos de PHP, sinta-se à vontade para entrar em contato com nossa equipe de suporte para discutir suas necessidades.
A Kinsta oferece suporte às versões PHP 7.4, 8.0, 8.1, 8.2, 8.3 e 8.4. Estas são as configurações padrão para o PHP:
- memory_limit = 256M
- post_max_size = 128M
- upload_max_filesize = 128M
- max_input_vars = 10000
- max_execution_time = 300
Funções PHP desabilitadas
As seguintes funções PHP estão desabilitadas no MyKinsta e não podem ser habilitadas:
exec() / shell_exec()
popen
proc_open
proc_close
proc_get_status
proc_terminate
proc_nice
posix_kill
symlink
getmypid
getpwuid / posix_getpwuid
pcntl_signal()
get_current_user
disk_total_space()