Timeout auf Admin-Ajax?

Ich schreibe ein Plugin und benutze admin-ajax . Es ist eine lang laufende function – das heißt, es verbindet sich mit einer API und lädt in Posts. Dies könnte manchmal 5-10 Minuten dauern. Es scheint so, als würde mein AJAX-Anruf nach 1-2 Minuten die Fehlermeldung “502 (Bad Gateway)” erhalten, und die Arbeit auf der PHP-Seite stoppt in genau diesem Moment.

  1. Gibt es eine Zeitüberschreitung, was Sie mit admin-ajax machen können?
  2. Gibt es einen besseren Weg, “long running” -Aktivitäten in einem anderen Plugin als admin-ajax zu machen?

Vielen Dank!

Solutions Collecting From Web of "Timeout auf Admin-Ajax?"

Es gibt immer eine Zeitüberschreitung, sei es TCP oder die PHP-Ausführungszeit (es sei denn, Sie konfigurieren Ihren Server auf eine seltsame Weise, PHP wird lang laufende Aufgaben beenden).

Wenn Sie viel arbeiten müssen, sollten Sie:

Brechen Sie es in kleinere Stücke

Plugins wie Regen-Thumbnails rufen eine Liste von Elementen ab, die bearbeitet werden sollen, und durchlaufen dann die Liste in kleinen, schnellen Batches, um zu verfolgen, was im Verlauf des processes getan wurde. Sie können 10 Minuten Arbeit machen, aber statt 1 Million Dinge in 1 Anfrage, ist es besser, 1 Sache in 1 Million Anfragen zu erledigen.

WP CLI

Teure langwierige Arbeiten sollten nicht am Frontend vorgenommen werden. Es sollte in der Befehlszeile erfolgen. Dies ist die beste Methode und empfohlen .

Implementieren Sie einen WP CLI-Befehl, der die erforderlichen Schritte ausführt, und führen Sie ihn aus. Dadurch wird das Zeitlimit für die Ausführung von PHP vollständig umgangen, ebenso wie Verbindungszeitüberschreitungen, die auftreten können. WP CLI-Befehle können stundenlang ausgeführt werden, wenn Ihr Code über genügend Systemressourcen verfügt und nach sich selbst aufräumt, um Speicherlecks zu vermeiden. Wenn Sie Daten übergeben müssen, verwenden Sie dazu Parameter.

Wenn Sie keinen CLI-Zugriff haben, verwenden Sie entweder einen verwalteten Host-Service oder einen Shared Hosting-Service. In diesem Fall sollten Sie entweder den Host verschieben (Shared Hosting ist problematisch) oder die Site auf Ihren lokalen Computer herunterladen und ausführen Klicken Sie lokal auf den CLI-Befehl und laden Sie die Ergebnisse hoch