Estoy usando múltiples sitios de Drupal (base de código único, múltiples sitios / *). Junto con esto, comencé a usar alias Drush para administrarlos:
$ cat sites/all/drush/aliases.drushrc.php
<?php
$aliases['localdev'] = array(
'site-list' => array(
'site1',
'site2',
'site3',
),
);
?>
Esto me permite realizar acciones fácilmente en todos los sitios:
$ drush @localdev cc all
>> También acabo de descubrir que puedo usar @sites y renunciar al archivo drushrc .
Al hacer esto, ejecutaré "cc all" en cada uno de mis sitios en serie (uno a la vez).
Me gustaría llevar esto al siguiente nivel e intentar ejecutar estos comandos en todos los sitios de forma simultánea . He estado leyendo, y da la impresión de que Drush no de hecho compatible con esta. La función drush_invoke_process () toma $ backend_options, que puede contener (de la documentación de la función):
* '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'.
Sin embargo, lo que no puedo entender es cómo puedo usar esto desde la línea de comando Drush . ¿Hay alguna opción que deba pasar a Drush o debo configurar algo en un archivo de configuración?
Cualquier información será muy apreciada, ¡mi curiosidad se despertó!
ACTUALIZAR
Basado en las respuestas a continuación, pude crear una prueba simple que demuestra el comportamiento de Drush, y sacar algunas conclusiones:
El comportamiento predeterminado de Drush al ejecutar operaciones en múltiples sitios es usar procesos concurrentes:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
Esto es cierto incluso cuando no se usan alias, y también es cierto cuando se usa el alias incorporado @sites de Drush. Estos dos comandos producen un comportamiento idéntico al anterior:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
Para cambiar el número de procesos concurrentes (el valor predeterminado es 4), la opción '--concurrencia = N' se puede pasar en el comando drush. Por ejemplo, si quiero la ejecución en serie, puedo establecer el número de procesos concurrentes en 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]