J'ai créé un module personnalisé avec un fichier .install
, Qui comprend des crochets de mise à jour hook_update_N()
et hook_update_N(&$sandbox)
.
Ils sont utilisés pour mettre à jour une collection de nœuds existants.
Chaque fois que j'exécute drush updb
, Le site passe automatiquement en mode maintenance (les demandes anonymes obtiennent un 503), et si la mise à jour réussit, le site revient en ligne. Tout seul.
Je n'ai trouvé aucune ressource sur le Web à propos de cette situation. Est-ce normal? Existe-t-il un moyen de désactiver ce comportement?
Cela semble normal, oui. Drush's UpdateDBCommands::updateBatch
, qui est responsable du traitement des mises à jour, contient ceci:
batch_set($batch);
// See updateFinished() for the restore of maint mode.
$this->maintenanceModeOriginalState = \Drupal::service('state')->get('system.maintenance_mode');
\Drupal::service('state')->set('system.maintenance_mode', true);
drush_backend_batch_process();
Le code définit délibérément le mode de maintenance sur true avant de traiter le lot, puis restaure l'état d'origine lorsqu'il est terminé.
Fonctionnement drush help updb
répertorie les options suivantes:
--cache-clear[=CACHE-CLEAR]
Vider les caches à la fin. [par défaut: "vrai"]--entity-updates
Exécutez les mises à jour automatiques du schéma d'entité à la fin de tous les hooks de mise à jour.--post-updates[=POST-UPDATES]
Exécutez les mises à jour après hook_update_n et les mises à jour d'entité. [default: "true"]
--no-cache-clear
Nier --cache-clear
option.--no-post-updates
Nier --post-updates
option.Il ne semble donc pas y avoir de moyen évident pour désactiver le comportement. Mais si vous mettez à jour la base de données, vous ne voulez probablement pas que les gens puissent accéder au site en même temps. Il y a une bonne explication à cela ici .