# 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.

- Auteur : Clément Hadrot
- Publié le : 2025-08-26
- Mis à jour le : 2025-08-26
- Catégorie : Hébergement &amp; serveurs
- URL : https://wpmoderne.dev.wordpress-developpement.fr/hebergement/absorber-cv-volumineux-espace-stockage-separe/

## L’essentiel

- 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

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.
