Sto usando Drupal multi-siti (base di codice singolo, più siti / *). Insieme a questo, ho iniziato a usare gli alias Drush per gestirli:
$ cat sites/all/drush/aliases.drushrc.php
<?php
$aliases['localdev'] = array(
'site-list' => array(
'site1',
'site2',
'site3',
),
);
?>
Ciò mi consente di eseguire facilmente azioni su tutti i siti:
$ drush @localdev cc all
>> Ho anche scoperto che posso semplicemente usare @sites e rinunciare al file drushrc .
In questo modo, eseguirò "cc all" su ciascuno dei miei siti in serie (uno alla volta).
Vorrei portarlo al livello successivo e provare a eseguire questi comandi su tutti i siti in modo simile . Ho letto e ho l'impressione che Drush lo sostenga davvero . La funzione drush_invoke_process () accetta $ backend_options, che può contenere (dalla documentazione della funzione):
* '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'.
Ciò che non riesco a capire, tuttavia, è come posso effettivamente utilizzarlo dalla riga di comando Drush . Esiste un'opzione che devo passare a Drush o devo impostare qualcosa in un file di impostazioni?
Ogni informazione sarà molto apprezzata - la mia curiosità è accesa!
AGGIORNARE
Sulla base delle risposte di seguito, sono stato in grado di creare un semplice test che dimostra il comportamento di Drush e trarre alcune conclusioni:
Il comportamento predefinito di Drush durante l'esecuzione di operazioni su più siti è l'utilizzo di processi simultanei:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
Questo è vero anche quando non si usano gli alias, ed è vero anche quando si usa l'alias @sites incorporato di Drush. Questi due comandi producono un comportamento identico come sopra:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
Per modificare il numero di processi simultanei (il valore predefinito è 4), l'opzione '--concurrency = N' può essere passata nel comando drush. Ad esempio, se voglio l'esecuzione seriale, posso impostare il numero di processi simultanei su 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]