Ich bin auf einem gemeinsam genutzten Server (Siteground) und da mein WordPress-PHP-Skript mehr als 30 Sekunden dauert, wird ein 504-Gateway-Timeout zurückgegeben.
Wird meine Abfrage ausgeführt und abgeschlossen, wenn kein weiterer Fehler auftritt?
Bearbeiten: Ich habe mein Hosting-Team gefragt, warum ich diesen Fehler erhalten habe. Hier hat der Siteground-Hosting-Experte das Problem wie folgt erklärt:
Wir verwenden beide Apache + Nginx auf allen unseren Servern. Apache wird für den Hauptwebdienst verwendet, während Nginx als Reverse-Proxy- und Distribute-Cache verwendet wird. Wenn die Antwort nicht aus dem Cache bereitgestellt werden kann (normalerweise bezieht sich dies auf dynamischen Inhalt), wird eine Anforderung von Nginx an Apache gesendet. Dies geschieht, wenn Apache die Anfrage verarbeitet, an Ihre Website weiterleitet und gemäß der PHP-Logik MySQL-Abfragen durchgeführt oder andere Daten abgerufen werden können. Wenn dieser Vorgang zu lange dauert und Apache die Antwort nicht rechtzeitig an Nginx zurücksendet, wird dieser Fehler angezeigt. Kurz gesagt, Apache kann die Anforderung nicht bedienen, da die Anwendung den Vorgang innerhalb der zulässigen Zeit abgeschlossen hat. Dies bedeutet auch, dass der initiierte Prozess höchstwahrscheinlich nicht vollständig abgeschlossen wurde und einige Daten / Aktionen möglicherweise gespeichert / ausgeführt wurden.
Der Experte sagt das "initiated process most probably not completed fully"
,
Weitere Details zu meinem Szenario: Mein Skript fügt wp_insert_post
meiner WordPress-Website Woocommerce-Produkte mit Variationen mithilfe der Methode hinzu . Nach dem Hinzufügen von Produkten werden die Bilder neu hinzugefügter Produkte angezeigt.
Wenn ich 1 Produkt (40 Variationen) hinzufüge, wird das Produktbild vervollständigt und angezeigt. Wenn ich 6 Produkte (240 Variationen) hinzufüge, erhalte ich eine Fehlermeldung direkt in meinem Browser.
Um dieses Problem weiter zu testen, habe ich meinen Code geändert und mit Ajax neu geschrieben und eine Prozessleiste wie ein System hinzugefügt. (Womit eine Zahl für jede Variation erhöht wird).
Nachdem ich den Code für 1 Produkt (mit 40 Variationen) ausgeführt habe, erhöht sich die Prozessnummer auf 40 und es wird das Produktbild angezeigt.
Wenn ich meinen Code für 6 Produkte ausführe, erhöht sich die Prozessnummer auf 240, aber es wird nichts angezeigt, und wenn ich das überprüfe, wird ein 504-Fehler angezeigt. ( jQuery.Ajax
Funktionsfehlerabschnitt)
Das lässt mich denken, dass die Abfrage auch Timeouts ausführt, aber ich bin mir immer noch nicht sicher und suche nach Details bezüglich eines 504-Gateway-Timeout-Fehlers, da es keine gute Dokumentation dazu gibt.