web-dev-qa-db-ja.com

複数のサイトでupdatedbをドラッシュします

共通モジュールコードを使用したマルチサイトインストールがあります(すべてのモジュールは、sites/all/modulesにあります)。モジュールを更新するとき、その後、drush updatedb -l site.comを使用して各サイトのデータベースを更新する必要があります。これを各サイトに対して行うのは、時間のかかる作業です。複数のサイトでデータベースをバッチ更新する方法はありますか?

ありがとう

6
john

Drush v4.4以降のサポートdrush @sites updb

4
nmc

マルチサイトインストールで実行するさまざまな時間のかかるタスク用に私が作成したスクリプトは次のとおりです

ファイルはsitesフォルダーにある必要があります。

スクリプトはすべてのフォルダー(alldefaultを除く)をループして、settings.phpファイルに基づいてすべてのサイトで選択されたコマンドを実行します

#!/bin/bash

# Get all Drupal sites
sites=`find . -maxdepth 1 -type d -print | grep -v '/all$' | grep -v '/default$' | grep -v '\.$'`

echo "Choose the commande to execute : "
echo "1. update"
echo "2. put sites offline"
echo "3. put sites online"
echo "4. clear all cache"
echo "5. clear css+js cache"
echo "6. clear specific cache"
echo "7. install specific module"
echo "8. disable specific module"
echo -n "Input [1,2,3,4,5,6,7 or 8] ? "
read choice

if [ $choice -gt 6 ] ; then
  echo -n "Extension (module/theme) name ?"
  read ext
fi

# For each site, execute the command
for site in $sites
do
  echo ----------
  echo $site
  cd $site  
  if [ $choice -eq 1 ] ; then
    drush updatedb
  Elif [ $choice -eq 2 ] ; then
    drush vset --always-set maintenance_mode 1
  Elif [ $choice -eq 3 ] ; then
    drush vset --always-set maintenance_mode 0
  Elif [ $choice -eq 4 ] ; then
    drush cc all
  Elif [ $choice -eq 5 ] ; then
    drush cc css+js
  Elif [ $choice -eq 6 ] ; then
    drush cc
  Elif [ $choice -eq 7 ] ; then
    drush pm-enable -y $ext
  Elif [ $choice -eq 8 ] ; then
    drush pm-disable -y $ext
  fi
  cd ../
done
6
Gueno