it-swarm.com.de

Führt wp-cron alle gleichzeitig oder nacheinander geplanten Aufgaben aus?

Ich entwickle ein Plugin und möchte eine Cron-Aufgabe hinzufügen (sagen wir cron_task_test), habe aber Zweifel. Wenn 15 Aufgaben (die von mehreren Plugins oder vom Benutzer selbst geplant werden können) gleichzeitig mit meiner Aufgabe (cron_task_test) ausgeführt werden sollen, wählt wp-cron sie nacheinander aus, dh wählt eine andere Aufgabe aus, nachdem die erste abgeschlossen wurde, oder Hat die erste Aufgabe mehr als eine Minute gedauert? Oder werden alle nacheinander abgefeuert

Kurz gesagt, wie funktioniert cron_lock? Wenn es nacheinander ausgeführt wird, überschreitet der Haupt-Cron-Thread, auf dem alle Tasks einzeln ausgeführt werden, nicht die maximale Ausführungszeit des Servers (in der Regel 30 Sekunden)?

Was passiert, wenn eine andere Cron-Aufgabe vor meiner Aufgabe (cron_task_test) einen Fehler ausgelöst oder das Zeitlimit überschritten hat?

2
learning_13

Gegen 12:00 Uhr sollten beispielsweise drei Aufgaben ausgeführt werden.

Wenn Sie wp-cron verwenden, wird es gestartet, wenn jemand Ihre Seite um 12:00 Uhr besucht. (Hier ist eine kleine Komplikation, denn wenn zwei Benutzer Ihre Seite genau im selben Moment besuchen, kann cron zweimal starten und alles zweimal ausführen.).

Jedoch öffnet jemand unsere Seite um 12:00 und cron startet. Es werden alle geplanten Ereignisse in einem Array abgerufen. Stellen Sie transient ein, dass cron beschäftigt ist, und starten Sie den gesamten Prozess in der Anweisung foreach mithilfe von call_user_func_array (er ist fast derselbe wie do_action, jedoch für array).

Vorgehensweise in foreach:

  • falls nötig neu planen;
  • ungeplant vor Arbeitsbeginn;
  • call_user_func_array (erledige die Arbeit);
  • überprüfen Sie die Cron-Sperre, da Cron die Schleife beendet, wenn der Hook zu lange lief und ein anderer Cron-Prozess die Sperre gestohlen hat.

Meine kleinen Tipps:

  • crontab kann eine bessere Lösung sein;
  • vergessen Sie nicht die Protokollierung, um Ihre Cron-Aufgabe zu testen.
  • wenn einer der Jobs von cron fehlschlägt, hat dies keine Auswirkungen auf andere Aufgaben (wenn ich falsch liege, korrigieren Sie mich bitte).

Hier haben Sie einige zusätzliche Informationen in Artikel von meinem Freund geschrieben: Cron-Lösungen für WordPress