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ファイルを無視できることもわかりました。
これを行うと、私のサイトのそれぞれで(一度に1つずつ) "cc all"が実行されます。
私は次のレベルにこれを取ると、すべてのサイト上でこれらのコマンドを実行してみたいと思いsimulantiously。私はいくつかの読書をしており、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のデフォルトの動作は、並行プロセスを使用することです。
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
これはエイリアスを使用していない場合にも当てはまり、Drushの組み込み@sitesエイリアスを使用している場合にも当てはまります。これらの2つのコマンドは、上記と同じ動作をします。
$ 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]