hook_update_N()
およびhook_update_N(&$sandbox)
更新フックを含む.install
ファイルを使用してカスタムモジュールを作成しました。
これらは、既存のノードのコレクションを更新するために使用されます。
drush updb
を実行すると、サイトは自動的にメンテナンスモードになり(匿名の要求は503を取得します)、更新が成功すると、サイトはオンラインに戻ります。すべてそれ自体で。
私はこの状況についてウェブ上でリソースを見つけることができませんでした。正常ですか?この動作を無効にする方法はありますか?
はい、それは正常に見えます。 Drush's UpdateDBCommands::updateBatch
は、更新の処理を担当し、次の内容を含みます。
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();
コードは、バッチを処理する前に意図的にメンテナンスモードをtrueに設定し、完了したら元の状態に戻します。
ランニング drush help updb
は、次のオプションをリストします。
--cache-clear[=CACHE-CLEAR]
完了時にキャッシュをクリアします。 [デフォルト: "true"]--entity-updates
更新フックの最後にエンティティスキーマの自動更新を実行します。--post-updates[=POST-UPDATES]
hook_update_nおよびエンティティの更新後にポスト更新を実行します。 [default: "true"]
--no-cache-clear
否定--cache-clear
オプション。--no-post-updates
否定--post-updates
オプション。したがって、この動作を無効にする明白な方法はないようです。しかし、データベースを更新している場合は、人々が同時にサイトにアクセスできるようにしたくないでしょう。そのための良い説明があります here 。