J'utilise plusieurs sites Drupal (base de code unique, plusieurs sites / *). Parallèlement à cela, j'ai commencé à utiliser des alias Drush pour les gérer:
$ cat sites/all/drush/aliases.drushrc.php
<?php
$aliases['localdev'] = array(
'site-list' => array(
'site1',
'site2',
'site3',
),
);
?>
Cela me permet d'effectuer facilement des actions sur tous les sites:
$ drush @localdev cc all
>> Je viens également de découvrir que je peux simplement utiliser @sites et renoncer au fichier drushrc .
Ce faisant, exécutera "cc all" sur chacun de mes sites en série (un à la fois).
Je voudrais prendre cela au niveau suivant et essayer d'exécuter ces commandes sur tous les sites de manière simulatrice . J'ai fait quelques lectures et j'ai l'impression que Drush soutient effectivement cela. La fonction drush_invoke_process () prend $ backend_options, qui peut contenir (à partir de la documentation de la fonction):
* 'invoke-multiple'
* If $site_alias_record represents a single site, then 'invoke-multiple'
* will cause the _same_ command with the _same_ arguments and options
* to be invoked concurrently (e.g. for running concurrent batch processes).
* 'concurrency'
* Limits the number of concurrent processes that will run at the same time.
* Defaults to '4'.
Ce que je ne peux pas comprendre, cependant, est comment utiliser cela à partir de la ligne de commande Drush . Existe-t-il une option que je dois transmettre à Drush, ou dois-je définir quelque chose dans un fichier de paramètres?
Toute information sera très appréciée - ma curiosité est piquée!
MISE À JOUR
Sur la base des réponses ci-dessous, j'ai pu créer un test simple qui démontre le comportement de Drush et tirer quelques conclusions:
Le comportement par défaut de Drush lors de l'exécution d'opérations sur plusieurs sites consiste à utiliser des processus simultanés:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
Cela est vrai même lorsque vous n'utilisez pas d'alias, et cela est également vrai lorsque vous utilisez l'alias @sites intégré de Drush. Ces deux commandes donnent un comportement identique à celui ci-dessus:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
Pour modifier le nombre de processus simultanés (la valeur par défaut est 4), l'option '--concurrency = N' peut être passée dans la commande drush. Par exemple, si je souhaite une exécution en série, je peux définir le nombre de processus simultanés sur 1:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);" --concurrency=1
Continue? (y/n): y
site1 >> 1360513387 [status]
site2 >> 1360513393 [status]
site3 >> 1360513399 [status]