Le WordPress d'aujourd'hui, décodé pour les développeurs

Hébergement & serveurs

Absorber des CV trop volumineux avec un espace de stockage séparé

Quand les candidatures saturent le disque du serveur applicatif, la bonne réponse n'est pas d'agrandir le disque mais de le décharger.

Par Clément Hadrot • 26 août 2025 • 4 min de lecture • Aucun commentaire
Absorber des CV trop volumineux avec un espace de stockage séparé

68 %. C’est la proportion d’espace disque occupée par le seul répertoire wp-content/uploads sur un serveur de recrutement observé après dix-huit mois d’activité, alors que la base de données elle-même ne représente qu’une fraction marginale du total. Le constat est net : ce n’est pas WordPress qui pèse lourd, ce sont les pièces jointes.

Un cabinet de recrutement qui traite plusieurs centaines de candidatures par mois accumule des CV au format PDF ou Word, souvent accompagnés de lettres de motivation et parfois de portfolios en pièce jointe. Ce flux ne ralentit jamais : chaque candidature ajoute son lot de fichiers, et rien dans le fonctionnement normal du site ne vient les supprimer.

Pourquoi le disque applicatif n’est pas le bon endroit

Le répertoire wp-content/uploads vit par défaut sur le même disque que le code de WordPress et, souvent, sur le même volume que les journaux du serveur web et le cache PHP. Quand ce disque commence à se remplir, plusieurs symptômes apparaissent en cascade : les sauvegardes automatiques échouent silencieusement faute d’espace temporaire, les mises à jour d’extensions se bloquent en cours de décompression, et dans les cas les plus sévères, MySQL lui-même refuse d’écrire de nouvelles lignes.

Un disque plein n’est jamais un problème isolé : il se propage à tous les services qui partagent le même volume, y compris ceux qui n’ont rien à voir avec les candidatures.

La bonne architecture : séparer le stockage des documents

La solution la plus stable ne consiste pas à agrandir indéfiniment le disque du serveur applicatif, mais à déporter le répertoire des pièces jointes vers un espace de stockage dédié, monté en réseau. Deux approches courantes cohabitent :

  • Un volume bloc supplémentaire, monté via fstab, dédié uniquement à wp-content/uploads ;
  • Un stockage objet compatible S3, monté localement via s3fs ou intégré directement à WordPress via le filtre upload_dir.

Rediriger les uploads sans toucher au thème

WordPress expose le filtre upload_dir précisément pour ce type de besoin, sans qu’il soit nécessaire de modifier le moindre appel dans le thème ou dans l’extension de candidature en ligne :

add_filter( 'upload_dir', function ( $dirs ) {
    $base = '/mnt/stockage-candidatures';
    $dirs['basedir'] = $base . $dirs['subdir'];
    $dirs['path']    = $base . $dirs['subdir'];
    return $dirs;
} );
L'essentiel à retenir : Le disque applicatif n'est pas fait pour des dizaines de milliers de PDF ; Un point de montage réseau change la donne sans réécrire le thème ; Le filtre upload_dir suffit à rediriger les nouveaux fichiers

Ce filtre agit à la racine du système de gestion des médias, ce qui signifie que la fonction native wp_handle_upload(), utilisée par la plupart des extensions de formulaire de candidature, écrit désormais directement sur le volume dédié sans code supplémentaire côté formulaire.

Le montage réseau : robustesse avant tout

Un point souvent négligé : un montage réseau qui se déconnecte silencieusement transforme des écritures de fichiers en erreurs PHP fatales. L’entrée fstab doit donc inclure des options qui empêchent un montage fantôme d’accepter des écritures dans le vide :

UUID=1234-5678 /mnt/stockage-candidatures nfs defaults,_netdev,hard,timeo=30 0 0

L’option hard impose de bloquer les écritures jusqu’au rétablissement du réseau plutôt que d’échouer silencieusement, ce qui évite de perdre une candidature au pire moment.

Gérer le cycle de vie des documents

Séparer le stockage règle le problème de volume, mais pas celui de la conservation dans le temps. Un cabinet de recrutement est tenu de purger les candidatures non retenues après une durée limitée, ce qui suppose une tâche planifiée plutôt qu’une purge manuelle :

wp cron event schedule purge_candidatures_expirees now daily

Cette tâche peut s’appuyer sur une métadonnée de date de dépôt enregistrée à chaque candidature, comparée à la politique de conservation définie par le cabinet, pour supprimer à la fois l’entrée en base et le fichier physique correspondant sur le volume dédié.

Un principe simple qui évite bien des sueurs froides : jamais de purge automatique sans avoir d’abord vérifié, sur un échantillon, que le fichier physique et l’entrée en base disparaissent bien ensemble, jamais l’un sans l’autre.

Notre verdict

Séparer le stockage des pièces jointes volumineuses du disque applicatif n’est pas un luxe réservé aux gros volumes : c’est une précaution qui protège l’ensemble du serveur contre un effet domino provoqué par un seul type de contenu. Le filtre upload_dir rend ce déport transparent pour le reste du site, à condition de traiter le montage réseau avec la rigueur qu’il mérite.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi