Estou em um servidor compartilhado (Siteground) e, como meu script PHP do WordPress leva mais de 30 segundos, ele retorna um tempo limite de 504 Gateway.
Minha consulta será executada e concluída se não encontrar mais um erro?
Editar: perguntei por que recebi esse erro na minha equipe de hospedagem. Aqui, o especialista em hospedagem de sites explicou o problema da seguinte maneira:
Usamos o Apache + Nginx em todos os nossos servidores. O Apache é usado para o serviço web principal, enquanto o Nginx é usado como proxy reverso e distribui o cache. Quando a resposta não pode ser veiculada no cache (geralmente, isso se refere ao conteúdo dinâmico), uma solicitação do Nginx é feita para o Apache. Quando o Apache está processando a solicitação, a encaminha para o seu site e de acordo com a lógica do PHP, as consultas MySQL podem ser feitas ou outros dados obtidos. Quando esse processo demorar muito e o Apache não retornar a resposta em tempo hábil ao Nginx, você verá esse erro. Em resumo, o Apache não pode atender à solicitação, pois o aplicativo concluiu o processo dentro do tempo permitido. Isso também significa que o processo iniciado provavelmente não foi concluído completamente e alguns dados / ações podem ter sido salvos / executados.
O especialista diz que "initiated process most probably not completed fully"
,
Mais detalhes no meu cenário: Meu script adiciona produtos de woocommerce com variações usando o wp_insert_post
método ao meu site wordpress. Após a adição dos produtos, ele exibe as imagens dos produtos adicionados recentemente.
Quando adiciono 1 produto (40 variações), ele conclui e exibe a imagem do produto. Quando adiciono 6 produtos (240 variações), recebo um erro diretamente no meu navegador.
Portanto, para testar ainda mais esse problema, modifiquei meu código e o reescrevi usando ajax e adicionei uma barra de processo como o sistema. (Que incrementa um número para cada variação).
Depois de executar o código de 1 produto (com 40 variações), o número do processo aumenta para 40 e ele exibe a imagem do produto.
Quando executo meu código para 6 produtos, o número do processo aumenta para 240, mas ele não exibe nada e, quando verifico, recebe um erro 504. ( jQuery.Ajax
seção de erro de função)
Portanto, isso me faz pensar que a consulta é executada até o tempo limite, mas ainda não consigo ter certeza e procurando detalhes por trás do erro de tempo limite do gateway 504, pois não há uma boa documentação sobre isso.