drush updatedb на нескольких сайтах

У меня есть многоуровневая установка с общим кодом модулей (все модули находятся на сайтах /все /модули). Когда я обновляю модули, после этого мне нужно обновить базу данных каждого сайта с помощью drush updatedb -l site.com Это занимает много времени, чтобы сделать это для каждого сайта. Есть ли способ пакетного обновления базы данных на нескольких сайтах?

Спасибо

6 голосов | спросил john 9 +04002011-10-09T12:43:27+04:00312011bEurope/MoscowSun, 09 Oct 2011 12:43:27 +0400 2011, 12:43:27

2 ответа


4

Я считаю, что drush v4.4 и выше поддерживают drush @sites updb.

ответил nmc 9 +04002011-10-09T17:56:30+04:00312011bEurope/MoscowSun, 09 Oct 2011 17:56:30 +0400 2011, 17:56:30
6

Вот сценарий, который я написал для разных задач, требующих много времени для запуска на многоуровневой установке.

Файл должен находиться в папке sites.

Скрипт будет проходить через все папки (кроме all и default) для запуска команды, выбранной на каждом сайте, в зависимости от их файла 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
ответил Gueno 10 FebruaryEurope/MoscowbFri, 10 Feb 2012 17:21:44 +0400000000pmFri, 10 Feb 2012 17:21:44 +040012 2012, 17:21:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132