Einblicke in WP-Cron Eine Einführung in das Planen von Aufgaben in WordPress

Heute werden wir uns die WP-Cron-Funktionen anschauen, eine der weniger bekannten Tricks, die Sie für Spaß verwenden können! Der Hauptzweck ist das Einrichten von Zeitplänen oder anderen zeitkritischen Aufgaben. Wir werden einige Tricks für die Verwendung untersuchen und einige potenzielle Probleme damit identifizieren und wie man sie umgehen kann.

WordPress ist eine leistungsstarke Software. Seine Einfachheit kann den nichttechnischen Benutzern jedoch oft einen falschen Eindruck von den inneren Funktionen vermitteln. Dies könnte im besten Interesse von WordPress gewesen sein, da etwas, das sich einfach und benutzerfreundlich anfühlt, allgemein von den Massen angenommen wird. Es ist jedoch wichtig zu wissen, dass sich hinter den Kulissen eine leistungsfähige Software befindet, die weit mehr als nur einfaches Bloggen leisten kann.

Eine der Funktionen in WordPress, über die weniger geschrieben wird, muss WP-Cron sein (siehe die Codex-Seite von WP-Cron hier). Nun diejenigen von euch, die sich mit General befasst haben Cron auf einem Linux-Server kennen Sie die Leistungsfähigkeit dieser Funktion.

Was ist Cron??

Cron ist ein UNIX-Befehl zum Planen von Jobs, die später ausgeführt werden sollen. EIN Cron wird normalerweise verwendet, um einen Job zu planen, der regelmäßig ausgeführt wird. Sie können beispielsweise eine Cron-Funktion verwenden, um jeden Morgen eine Benachrichtigung zu senden. Es ist auch ein Daemon Dieser Prozess läuft kontinuierlich ab und wartet auf bestimmte Ereignisse.


Wie es funktioniert

Da WordPress in so vielen verschiedenen Setups installiert ist, dass die Dinge ordnungsgemäß ausgeführt werden, implementierten die WordPress-Entwickler einen Pseudo-Cron, der das enthält WP-Cron-Funktionen Das hilft beim Planen von Jobs wie:

  • Nach Aktualisierungen für Designs und Plugins suchen
  • Geplante Beiträge veröffentlichen
  • Senden von Pingbacks
  • und mehr!

Im Gegensatz zu regulären Cron-Jobs, die aufgrund der Servereinstellungen zu einem bestimmten Zeitpunkt ausgeführt werden, wird die WP-Cron-Funktion bei jedem Besuch der WordPress-Website ausgeführt. Dies führt dazu, dass eine WordPress-Site auf verschiedenen Arten von Server-Setups ordnungsgemäß ausgeführt wird, da viele serverseitige Anforderungen entfallen. Bei jedem Laden der Seite überprüft WordPress, ob WP-Cron ausgeführt werden muss. Wenn ein Bedarf besteht, versucht er, eine Anfrage über HTTP an den Server zu senden wp-cron.php Datei.

Der Grund zu rufen wp-cron.php Dies liegt daran, dass einige Jobs möglicherweise länger dauern und der Benutzer, der die WordPress-Seite anfordert, nicht zum Warten aufgefordert wird. Durch Aufrufen der Datei wp-cron.php kann die WP-Cron-Funktion als separater Prozess im Hintergrund ausgeführt werden, ohne dass die Seitenladezeit für den Benutzer verzögert wird. Sobald die WP-Cron-Funktion gestartet ist, wird sie weiter ausgeführt, bis alle erforderlichen Jobs abgeschlossen sind oder eine Ausführungszeit erreicht wird, die in der Serverkonfiguration festgelegt ist.

Je nach Konfiguration Ihres Webhosts kann WP-Cron seine Jobs nicht ausführen oder funktioniert überhaupt nicht. Websites mit viel Verkehr haben eine Reihe anderer Probleme, wie beispielsweise mehrere WP-Cron-Prozesse, die in Schleifen ablaufen. Die meisten Leute machen WordPress dafür verantwortlich, aber es ist nicht unbedingt ein Problem mit WordPress. Jede Situation ist anders und basierend darauf können wir WordPress so anpassen, dass es optimal läuft. Nachfolgend finden Sie einige der häufigsten Probleme, mit denen die Benutzer konfrontiert sind und wie Sie diese beheben können.


Einige Probleme mit WP-Cron

Problem: Mehrfach laufender WP-Cron-Prozess auf stark frequentierten Websites

Wenn Sie ein Serveradministrator sind oder Ihren eigenen Server mit einer Firewall verwalten, haben Sie möglicherweise von Ihrer Firewall E-Mails über eine Datei "wp-cron.php" erhalten, die über einen längeren Zeitraum ausgeführt wird. Dies geschieht, wenn die auf Ihrem Server festgelegte Skriptausführungszeit mehr als 60 Sekunden beträgt. Da der Prozess nicht beendet wird und neue Prozesse gestartet werden, werden mehrere Instanzen des WP-Cron-Prozesses auf dem Server ausgeführt.

Dies ist auf einer Website mit wenig Verkehr nicht der Fall. Wenn Ihre WordPress-basierte Website jedoch zu einem bestimmten Zeitpunkt über mehrere Benutzer verfügt und die maximale Skriptausführungszeit hoch festgelegt ist, werden viele Instanzen dieser WP-Cron-Funktion ausgeführt. Bis zu einer aktuellen Version von WordPress gab es immer ein Problem mit mehreren Cron-Prozessen, die dieselben Ereignisse durchlaufen.

HINWEIS: WordPress 3.3 bietet uns noch bessere Cron-Sperren. Dieser Artikel wurde gerade veröffentlicht, als WordPress 3.3 veröffentlicht wurde. Dieses Feature bietet ein besseres Cron-Locking und vermeidet, dass mehrere WP-Cron-Prozesse über dieselben Ereignisse laufen.

Problem: Geplante Beiträge fehlen

Ein weiteres, häufig bekanntes Problem mit einigen Hosting-Providern und einigen Websites mit sehr geringem Traffic sind geplante Beiträge, die nicht veröffentlicht werden. Da die WP-Cron-Funktion nur bei einer Seitenanforderung ausgeführt wird, werden die geplanten Jobs nicht ausgeführt, wenn keine Anforderungen vorhanden sind.

Hinweis: Es gibt kein Problem mit WordPress. Auch seit Version 3.x wurde dies viel weniger gemeldet. Es gibt jedoch viele Plugins, die sich um dieses Problem kümmern.

Problem: WP-Cron läuft überhaupt nicht

Auch dies ist ein Problem mit dem Server-Setup. Aufgrund fehlerhafter Einstellungen blockiert die Firewall, dass sich Skripts nicht selbst aufrufen, sodass die WP-Cron-Funktion nicht funktioniert.


Mögliche Lösung für die meisten WP-Cron-Probleme

Um zu vermeiden, dass mehrere WP-Cron-Instanzen für eine einzelne Website auf Ihrem Server ausgeführt werden, habe ich versucht, die Standardmethode zum Einrichten von Cron-Jobs auf einem Linux-Server zu verwenden (Apache mit cPanel als Kontrollfeld). Der Vorteil dieser Methode ist:

  • Mehr Kontrolle über die Ausführung der WP-Cron-Funktion.
  • Vermeiden Sie mehrere Schleifen.
  • Wenn Sie einen Server mit vielen gehosteten WordPress-Websites besitzen, kann dies die Serverlast reduzieren.

Bevor Sie sich damit befassen, stellen Sie sicher, dass Ihr Webhost Ihnen das Einrichten von standardmäßigen Linux-Cron-Jobs ermöglicht. Die Art und Weise, wie diese Einrichtung vorgenommen wird, hängt von der von Ihrem Host angebotenen Systemsteuerung ab. In diesem Artikel werde ich jedoch eine Anleitung zum Einrichten eines Cron-Jobs unter Verwendung der cPanel-Systemsteuerung enthalten, die heutzutage auf Linux-Servern üblich ist.

Die folgenden Schritte waren:

  1. Deaktivieren Sie die Ausführung von internem WP-Cron beim Laden der Seite.
  2. Richten Sie eine Cron-Funktion ein, die in regelmäßigen Abständen eine Abrufanforderung an die Datei wp-cron.php auslöst, je nach Ihren Wünschen.

Ja, so einfach ist das. Nur zwei Schritte, damit alles reibungsloser läuft.

HINWEIS: Bevor Sie diese Methode befolgen, beachten Sie bitte, dass das Deaktivieren von internem WP-Cron auch dazu führen kann, dass die Website aufgrund Ihres Setups oder der verwendeten Plugins nicht ordnungsgemäß ausgeführt wird.

1. Deaktivieren Sie die interne WP-Cron-Funktion

Öffnen Sie die Datei wp-config.php in NotePad oder in einem Editor Ihrer Wahl und fügen Sie oben die beiden folgenden Zeilen ein.

 // Deaktiviere interne Wp-Cron-Funktion define ('DISABLE_WP_CRON', true);

Dadurch wird die interne WP-Cron-Funktion jetzt angehalten und die Datei wp-cron.php wird nicht aufgerufen.

2. Richten Sie über das Bedienfeld Ihres Hosts eine echte Cron-Funktion ein

Wenn Sie Cron-Jobs einrichten dürfen, müssen Sie einen Cron wie folgt einrichten:

wget http://www.server.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1


Nachfolgend finden Sie die Schritte, um dies von einem cPanel-basierten Host aus durchzuführen.

1. Rufen Sie das cPanel Ihres Kontos auf

Normalerweise lautet der Link http://yourwebsite.com/cpanel oder http://yourwebsite.com:2082. Wenn Sie Ihre Benutzer-ID und Ihr Kennwort eingegeben und das Steuerungsfeld geöffnet haben, scrollen Sie zum Abschnitt "Erweitert"..

2. Gehen Sie zur Cron-Einstellungsseite

Klicken Sie im erweiterten Bereich auf das Symbol "Cron Jobs".

3. Richten Sie einen Cron-Job ein

Auf der neuen Seite finden Sie einen Abschnitt "Neuen Cron-Job hinzufügen", wie im obigen Bild. Wählen Sie im Dropdown-Feld "Allgemeine Einstellungen" die Option "Alle 5 Minuten ...". Wenn Sie dies auswählen, werden die restlichen Felder automatisch mit den erforderlichen Informationen gefüllt. Im nächsten Schritt erkläre ich meine Absicht, ein 5-Minuten-Intervall für die Ausführung des Skripts einzurichten.

Fügen Sie im Befehlsfeld die folgende Zeile hinzu. Vergessen Sie nicht, die korrekte Website-Adresse anzugeben.

wget http://www.yourwebsite.com/wp-cron.php?doing_wp_cron=1> / dev / null 2> & 1

Klicken Sie anschließend auf die Schaltfläche "Neuen Cron-Job hinzufügen".

Ab jetzt fordert der Server alle 5 Minuten die Datei wp-cron.php an. Nun, der Grund, warum ich dies als 5 Minuten festgelegt habe, ist, dass ich die Skriptausführungszeit meistens auf 4 Minuten anstatt auf 60 Sekunden festgesetzt habe. Dies geschieht, um große Bilddateien, Sicherungsvorgänge usw. laden zu können. Sie können jedoch auch die Einstellungen ändern und andere Optionen wählen, um den Cron alle 1 Minute auszuführen.

HINWEIS: Dies funktioniert gut für allgemeine WordPress-Websites. Für diejenigen, die ein WordPress-Netzwerk verwenden, sind möglicherweise zusätzliche Schritte erforderlich. Führen Sie daher die oben genannten Schritte nicht aus, wenn Sie die WordPress-Version für mehrere Standorte ausführen.


Fazit

Wenn Sie Probleme haben oder andere Ideen haben, teilen Sie uns bitte Ihre Kommentare mit!