Я використовую кілька сайтів Drupal (одна кодова база, кілька сайтів / *). Поряд з цим я почав використовувати псевдоніми Drush для управління ними:
$ cat sites/all/drush/aliases.drushrc.php
<?php
$aliases['localdev'] = array(
'site-list' => array(
'site1',
'site2',
'site3',
),
);
?>
Це дозволяє мені легко виконувати дії на всіх сайтах:
$ drush @localdev cc all
>> Я також нещодавно виявив, що я можу просто використовувати @sites і відмовитись від файла drushrc .
Виконуючи це, виконуватимуться "cc all" на кожному з моїх сайтів послідовно (по одному).
Я хотів би перенести це на наступний рівень і спробувати запустити ці команди на всіх сайтах одночасно . Я робив деякий читання, і знаходяться під враженням , що Drush це дійсно підтримує це. Функція drush_invoke_process () приймає $ backend_options, яка може містити (з документації на функції):
* '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'.
Однак я не можу зрозуміти, як я використовую це в командному рядку Drush . Чи є варіант, який мені потрібно передати Drush, чи мені потрібно щось встановити у файлі налаштувань?
Будь-яка інформація буде дуже вдячна - моя цікавість пікантна!
ОНОВЛЕННЯ
На підставі відповідей нижче, я зміг створити простий тест, який демонструє поведінку Друша, і зробити деякі висновки:
Поведінка Drush за замовчуванням під час виконання операцій на кількох сайтах полягає у використанні одночасних процесів:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
Це справедливо навіть тоді, коли не використовуються псевдоніми, а також правдиво, коли використовується вбудований псевдонім @sites Друша. Ці дві команди дають однакову поведінку, як описано вище:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
Щоб змінити кількість одночасних процесів (за замовчуванням дорівнює 4), в команді drush можна передати опцію '--concurrency = N'. Наприклад, якщо потрібно послідовне виконання, я можу встановити кількість одночасних процесів на 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]