Saya menggunakan Drupal multi-situs (basis kode tunggal, beberapa situs / *). Seiring dengan ini, saya sudah mulai menggunakan alias Drush untuk mengelolanya:
$ cat sites/all/drush/aliases.drushrc.php
<?php
$aliases['localdev'] = array(
'site-list' => array(
'site1',
'site2',
'site3',
),
);
?>
Ini memungkinkan saya untuk dengan mudah melakukan tindakan di semua situs:
$ drush @localdev cc all
>> Saya juga baru tahu bahwa saya bisa menggunakan @Situs , dan melupakan file drushrc .
Melakukan ini, akan menjalankan "cc all" di setiap situs saya secara seri (satu per satu).
Saya ingin membawa ini ke level berikutnya dan mencoba menjalankan perintah ini di semua situs secara simultan . Saya telah melakukan beberapa bacaan, dan am di bawah kesan bahwa Drush tidak memang mendukung ini. Fungsi drush_invoke_process () membutuhkan $ backend_options, yang dapat berisi (dari dokumentasi fungsi):
* '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'.
Apa yang saya tidak tahu, bagaimanapun, adalah bagaimana saya benar-benar menggunakan ini dari baris perintah Drush . Apakah ada opsi yang perlu saya sampaikan ke Drush, atau apakah saya perlu mengatur sesuatu di file pengaturan?
Info apa pun akan sangat dihargai - keingintahuan saya terguncang!
MEMPERBARUI
Berdasarkan jawaban di bawah ini, saya dapat membuat tes sederhana yang menunjukkan perilaku Drush, dan menarik beberapa kesimpulan:
Perilaku default Drush ketika menjalankan operasi di banyak situs adalah menggunakan proses bersamaan:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
Ini benar bahkan ketika tidak menggunakan alias, dan juga benar ketika menggunakan alias situs bawaan Drush. Dua perintah ini menghasilkan perilaku yang identik seperti di atas:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
Untuk mengubah jumlah proses bersamaan (default adalah 4), opsi '--concurrency = N' dapat diteruskan dalam perintah drush. Misalnya, jika saya ingin eksekusi serial, saya dapat mengatur jumlah proses bersamaan menjadi 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]