Optimaliseren snelheid - WordPress cron verplaatsen naar cPanel

WordPress voert automatisch cron jobs uit om bepaalde zaken in de backend op te schonen. Deze worden aangeroepen op het moment dat een gebruiker de website bezoekt, en de cronjob recent niet heeft gedraaid. Dit betekend dat je voor het uitvoeren van de crobjobs afhankelijk bent van bezoekers, wat bij websites met weinig bezoekers soms voor problemen kan zorgen. 

WP Cron omzetten naar cPanel cronjob

Om beter te controleren wanneer de WordPress cronjobs precies draaien kun je deze omzetten naar cPanel. Op die manier zullen ze voortdurend draaien volgens het schema dat je zelf opgeeft, wat de load van de cronjobs beter verspreid aangezien er per job minder acties uitgevoerd zullen hoeven te worden.Je kunt dit uitvoeren in twee stappen:

  1. Cronjob verwijderen uit WordPress 
    Open hiervoor het wp-config.php bestand en voeg onderstaande regel toe:
    define('DISABLE_WP_CRON', 'true');
  2. Cronjob toevoegen in cPanel
    Ga in cPanel naar de Cronjob pagina en voeg daar onderstaande cronjob toe zodat deze iedere 15 minuten aangeroepen word.
    Pas vervolgens onderstaande regel aan met jouw domeinnaam en voeg deze toe

    wget -q -O - <https://www.voorbeeld.nl/wp-cron.php?doing_wp_cron> >/dev/null 2>&1


Cronjob gebruik controleren

Ben je benieuwd welke zaken precies in de cronjobs draaien, en hoe deze afgehandeld worden? Met behulp van onderstaande plugin kun je precies zien welke zaken in de planning staan en hoe deze uitgevoerd worden.
https://wordpress.org/plugins/wp-crontrol/

Individuele cronjobs draaien

Normaal gesproken zal de cron job alle taken uitvoeren die open staan. Om hier meer controle in te verkrijgen en enkel de jobs uit te voeren die je wilt laten uitvoeren zul je gebruik moeten maken van WP-CLI. Met behulp van onderstaande commando kun je de volledige lijst inzien.

wp cron event list
+-------------------------------------------+---------------------+-----------------------+---------------+
| hook                                      | next_run_gmt        | next_run_relative     | recurrence    |
+-------------------------------------------+---------------------+-----------------------+---------------+
| jetpack_v2_heartbeat                      | 2019-10-17 03:56:45 | now                   | 1 day         |
| action_scheduler_run_queue                | 2019-10-17 04:00:08 | now                   | 1 minute      |
| jetpack_sync_cron                         | 2019-10-17 04:01:42 | now                   | 5 minutes     |
| jetpack_sync_full_cron                    | 2019-10-17 04:01:42 | now                   | 5 minutes     |
| prli_cleanup_visitor_locks_worker         | 2019-10-17 04:16:11 | now                   | 1 hour        |
| jetpack_clean_nonces                      | 2019-10-17 04:23:01 | now                   | 1 hour        |
| wp_privacy_delete_old_export_files        | 2019-10-17 04:39:57 | now                   | 1 hour        |

Om in één keer alle cronjobs uit te voeren die klaar staan kun je onderstaande commando gebruiken:

wp cron event run --due-now

Om enkel een bepaalde job uit te voeren gebruik je onderstaande commando:

wp cron event run jetpack_v2_heartbeat

Om deze WP-CLI jobs ook via cPanel toe te voegen kun je onderstaande toevoegen als cronjob:

cd /public_html; wp cron event run --due-now >/dev/null 2>&1

Externe cronjobs

Mocht je nog meer controle over de cronjobs willen hebben en bijvoorbeeld ook e-mailmeldingen wilt ontvangen over de status hiervan kun je je het best aanmelden voor een externe cron job dienst zoals https://www.easycron.com/. Hiermee kun je precies inzien welke cronjobs draaien, hoe deze zijn uitgevoerd, en kun je notificaties ontvangen wanneer er iets niet goed gaat. 

Heeft dit artikel je goed geholpen? Dank voor je feedback! Er is een probleem opgetreden bij het verzenden. Probeer opnieuw.