Better Wordpress CRON Jobs

How to use in an efficient way the Wordpress CRON without slowing your website.

CRON jobs in the IT world describe the tasks scheduled at regular intervals. Following a specific timeline from the server that can be customized, WordPress can be setup using this system as well.

The default setup of WordPress can be a bit obtrusive as the schedule can be verified every time a page is loaded which means every time a user is navigating on your site.

If not the case, a wrong setup or the inappropriate use of the caching system can often cause side effects that prevent triggering the schedule at the right time.

I recommend skipping the default configuration in favor of the server CRON jobs of your web hosting.

Step 1: Disable the default Wordpress CRON

Editer le fichier wp-config.php et ajouter la ligne suivante :

define('DISABLE_WP_CRON', true);

Maintenant que le CRON est désactivé, toutes les tâches dans la file d'attente du système de gestion ne seront pas traîtées.

Step 2: Trigger Wordpress CRON from the web server CRON

Most of web hosting companies nowadays offer server task management from an admin panel with more or less options for the setup. We won't be able to cover every case but let's review together the basics.

Common Case: Shared Hosting like OVH

PHP Binary

For any shared hosting platforms, you need to know the path to PHP. Mostof the time the required command is available from your host FAQ. It will be something looking like this :

/usr/local/bin/php

Path to your root folder

The second information you need is the path to the root location of your website. Depending if you are using your primary domain or a subdomain, there might be a slight difference but it often looks like the home folder on a Linux system :

/home/[account_name]/[domain_name]/www/

Add the WordPress tasks to the CRON

Basically what you need to do is to go to the Task Manager - or a similar menu like CRON Tasks or CRON Jobs should be available in your admin panel like Cpanel - and trigger via a task the file called wp-cron.php - a file included with every Wordpress setup - from the PHP command.

The task will look like :

/usr/local/bin/php /home/[account_name]/[domain_name]/www/wp-cron.php 

You will need to define the period. Running the task Once per hour is enough. If you are using features like future publishing, custom caching, etc... you can reduce it to 30 or 15 minutes depending on your use.

With shared hosting plans - resources are shared between the clients - limits are often set by the web hosting company in charge to avoid the server to being stuck with too many tasks once at a time.

With specific cases like an e-commerce site, you might want to consider reducing to a fastest 5-minute pace but nobody should use less than that to avoid troubles with the queue.

Une meilleure exécution des tâches Wordpress

Ou comment profiter pleinement du CRON de Wordpress sans ralentir son site.

Les tâches CRON dans le monde informatique décrivent les tâches planifiées à intervalles réguliers. Suivant un calendrier spécifique côté serveur qui peut être personnalisé, WordPress peut également être configuré pour utiliser ce système.

La configuration par défaut de WordPress peut être un peu envahissante car du côté du serveur, le calendrier peut être vérifié à chaque fois qu'une page est chargée, c'est-à-dire à chaque fois qu'un visiteur navigue sur votre site.

A l'inverse, l'utilisation inappropriée de diverses extensions de cache ou une mauvaise configuration peut facilement perturber le déclenchement prévu dans le calendrier.

Pour éviter tous ses effets de bord, je recommande d'éviter la configuration par défaut au profit des tâches CRON géré par votre hébergement web.

Étape 1 : Désactiver le CRON par défaut de Wordpress

Edit the wp-config.php file and add the following line :

define('DISABLE_WP_CRON', true);

Now that the CRON is officially disabled, all tasks queued inside the CMS won't be executed.

Étape 2: Déclencher le CRON de Wordpress depuis le CRON système

Cela va dépendre de votre hébergeur. Sachez que la pluplart d'entre eux, peu importe la solution proposée (partagée, semi-dédiée, ect...), vous offre la possibilité de créer des tâches via un panneau d'administration.

Nous n'allons pas pouvoir couvrir ensemble tous les cas mais voyons les bases.

Hébergement partagé comme OVH

Le programme PHP

Pour tous les hébergements partagés, vous devez connaître le chemin vers l'application php utilisée par votre hébergeur. La plupart du temps cela ressemble à un chemin comme celui-ci:

/usr/local/bin/php

Chemin vers la racine de votre répertoire

La seconde information nécessaire est le chemin chez votre hébergeur pointant à la racine de votre site internet. Suivant qu'il s'agisse du nom de domaine principal ou d'un sous-domaine, il peut y avoir des variantes mais cela ressemble souvant à une hiérarchie d'un système linux :

/home/[nom_du_compte]/[nom_domaine]/www/

Il est facilement possible de connaître cette information depuis les paramètres (S)FTP ou encore une fois depuis la FAQ.

Ajout de wp-cron

Vous devez vous rendre dans le "gestionnaire de tâches" de votre hébergeur - ou tout autre menu similaire comme Tâches CRON - et ajouter une tâche pour déclencher l'exécution du fichier wp-cron.php - un fichier inclus dans toutes les installations de Wordpress - depuis la commande php.

L'instruction ressemblera donc à

/usr/local/bin/php /home/[nom_du_compte]/[nom_domaine]/www/wp-cron.php 

Lors de l'ajout d'une tâche, vous devez choisir un intervalle d'exécution. Il est suffisant d'exécuter la tâche une fois par heure

Si vous utilisez des fonctionnalités spécifiques comme la publication automatique à une date ultérieure il est possible de réduire l'intervalle à 30 ou 15minutes mais il ne faut jamais descendre en dessous de 5 minutes par prudence.

Sachant qu'avec une solution d'hégergement partagée les ressources sont partagées entre plusieurs clients - d'où les frais moins élevés - votre hébergeur vous impose sûrement déjà un seuil pour éviter la saturation.

「Wordpress CRON」の設定方法

サイトが遅くならいように効率的なCRONの設定を調整する。

IT の世界における「CRON ジョブ」は、サーバーのスケジュールに登録されていたタスクが動きます。めざまし時計と同じように。 WordPressのセットアップを調整するとCRONに接続することができます。

WordPress のデフォルト設定は、ページが読み込まれるたび、つまりユーザーがサイト内を移動する際、スケジュールの確認が毎回行われ、少し邪魔になる可能性があります。

間違ったセットアップやキャッシュシステムの不適切な使用により、適切なタイミングでスケジュールに登録されていたタスクが確認されない可能性もあります。

なので私はこのデフォルト設定を変更して、Web ホスティングのサーバーにある「CRONジョブ」を優先することをお勧めします。

第一:WordPressのデフォルトCRONの設定を無効にする

「wp-config.php」のファイルを編集して、以下の設定を追加しましょう:

define('DISABLE_WP_CRON', true);

今CRONの設定が無効になっている状況なので、管理システムから登録されていたタスクが発生されないようになりました。

第二:サーバーのCRONからWPのCRONを発生する方法

ウェブホスティングによって、やり方がほとんど変わりません。管理パネルから変更することができます。

一般的なホスティング:共有サーバーまたはレンタルサーバー

PHPのバイナリー

WordpressみたいなPHPで動いているCMSにはPHPが必要です。よくこの情報がホスティング社のFAQに書いてあります。例えば:

/usr/local/bin/php

ルートフォルダーのパス

次はサーバーで自分のアカウントのウェブサイトのホームフォルダーのパスも必要です。よくアカウント名とドメイン名含めて設定されていますので、以下のパスの様になります:

/home/[アカウント名]/[ドメイン名]/www/
/home/[アカウント名]/[ドメイン名]/public/
/home/[アカウント名]/[ドメイン名]/[サブドメイン名]/

FAQや(S)FTPの情報から簡単に分かります。

wp-cronの追加

ホスティングサーバーの管理画面の中にどこか「タスクマネジャー」みたいなメニュー(CRONジョブ)があるはずです。

そこでPHPの接続と「wp-cron.php」というファイルが動いているように設定する。このファイルはWordpressの管理システムの中にあります。

先ほど圧また情報の情報のおかがでタスクには以下のコマンドになります。例:

/usr/local/bin/php /home/[アカウント名]/[ドメイン名]/www/

タスクを追加する時には期間を決まります。基本的に 「一時間一回」 で十分です。使い方によって、例えば将来の自動公開、キャッシュなど30分か15分ごとにも設定できます。

レンタルサーバー場合はCPU、メモリーなどがアカウントで共有されていますのでお客様の為に制限がよくあります。例えば一番早くても50分毎。