# Mettre l'application en maintenance avec PAUSESERVER()

> Mettez le serveur en pause par nom pour que chaque requête reçoive une page 503, reprenez-le et sachez que sans second argument l'appel bascule l'état.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: fr
Content-SHA256: f94c4da20fb1ead2ebc0959e375562d42109fd13d5d0ea34a7cb3744bbeb8fc3
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

`PAUSESERVER(name, true)` met le serveur en pause et `PAUSESERVER(name, false)` le reprend. Tant qu'**au moins un nom** est en pause, chaque requête reçoit l'état **503** et la page de maintenance intégrée (une requête faite avec `xhr` reçoit une réponse d'erreur 503 au lieu de la page). Le nom identifie seulement qui a mis en pause, de sorte que deux parties de l'application puissent mettre en pause et reprendre indépendamment : le serveur répond de nouveau quand tous les noms ont été repris.

Sans le second argument, l'appel **bascule** : `PAUSESERVER(name)` met en pause quand le nom ne l'était pas et reprend quand il l'était, et renvoie le nouvel état (`true` quand il est en pause).

Comme un serveur en pause répond 503 à tout, y compris à la route qui le reprendrait, reprenez depuis votre propre code : un minuteur, un signal, une tâche qui se termine. L'exemple se met en pause pendant un court instant et reprend tout seul.

```js controllers/maintenance.js
exports.install = function() {
	ROUTE('GET /maintenance/', maintenance);
	ROUTE('GET /toggle/', toggle);
	ROUTE('GET /ping/', ping);
};

function maintenance($) {
	const state = PAUSESERVER('maintenance', true);
	setTimeout(() => PAUSESERVER('maintenance', false), 600);
	$.json({ paused: state });
}

function toggle($) {
	const first = PAUSESERVER('toggled');
	const second = PAUSESERVER('toggled');
	$.json({ first: first, second: second });
}

function ping($) {
	$.json({ ok: true });
}
```
