Je suis sur un serveur partagé (Siteground), et comme mon script PHP WordPress prend plus de 30 secondes, il renvoie un délai d'expiration de la passerelle 504.
Ma requête sera-t-elle exécutée et terminée si elle ne rencontre pas d'autre erreur?
Edit: J'ai demandé pourquoi j'ai reçu cette erreur à mon équipe d'hébergement, ici l'expert d'hébergement Siteground a expliqué le problème comme suit:
Nous utilisons à la fois Apache + Nginx sur tous nos serveurs. Apache est utilisé pour le service Web principal, tandis que Nginx est utilisé comme proxy inverse et cache de distribution. Lorsque la réponse ne peut pas être servie à partir du cache (généralement cela fait référence au contenu dynamique), une demande de Nginx est effectuée vers Apache. Ceci lorsque Apache traite la demande, la transmet à votre site Web et selon la logique PHP, des requêtes MySQL peuvent être effectuées ou d'autres données récupérées. Lorsque ce processus prend trop de temps et qu'Apache ne renvoie pas la réponse en temps opportun à Nginx, vous verrez cette erreur. En bref, Apache ne peut pas gérer la demande car l'application a terminé le processus dans le délai imparti. Cela signifie également que le processus initié ne s'est probablement pas entièrement terminé et que certaines données / actions peuvent avoir été enregistrées / exécutées.
L'expert dit que "initiated process most probably not completed fully"
,
Plus de détails sur mon scénario: mon script ajoute des produits de woocommerce avec des variantes en utilisant la wp_insert_post
méthode à mon site web wordpress. Une fois les produits ajoutés, il affiche les images des nouveaux produits ajoutés.
Lorsque j'ajoute 1 produit (40 variantes), il se termine et affiche l'image du produit. Lorsque j'ajoute 6 produits (240 variantes), je reçois une erreur directement dans mon navigateur.
Donc, pour tester davantage ce problème, j'ai modifié mon code et l'ai réécrit en utilisant ajax et j'ai ajouté une barre de processus comme le système. (Qui incrémente un nombre pour chaque variation).
Après avoir exécuté le code pour 1 produit (avec 40 variantes), le nombre de processus augmente à 40 et affiche l'image du produit.
Lorsque j'exécute mon code pour 6 produits, le nombre de processus augmente à 240, mais il n'affiche rien, et lorsque je vérifie, il reçoit une erreur 504. ( jQuery.Ajax
section d'erreur de fonction)
Cela me fait donc penser que la requête s'exécute même en cas de dépassement de délai, mais je ne suis toujours pas en mesure d'être sûr et de rechercher des détails après l'erreur de délai d'expiration de la passerelle 504 car il n'y a pas de bonne documentation à ce sujet.