Drupal çoklu siteler kullanıyorum (tek kod tabanı, birden çok site / *). Bununla birlikte, onları yönetmek için Drush takma adlarını kullanmaya başladım:
$ cat sites/all/drush/aliases.drushrc.php
<?php
$aliases['localdev'] = array(
'site-list' => array(
'site1',
'site2',
'site3',
),
);
?>
Bu, tüm sitelerde kolayca işlem yapmamı sağlıyor:
$ drush @localdev cc all
>> Sadece @sites'i kullanabileceğimi ve drushrc dosyasını bırakabileceğimi de keşfettim .
Bunu yaptığınızda, sitelerimin her birinde seri olarak (birer birer) "cc all" komutu yürütülür.
Bunu bir sonraki seviyeye taşımak ve bu komutları tüm sitelerde eşzamanlı olarak çalıştırmayı denemek istiyorum . Ben Drush izlenimi altında bazı okuma ve am yaptığını mu gerçekten bunu destekliyor. Drush_invoke_process () fonksiyonu (fonksiyon belgelerinden) içerebilir $ backend_options alır:
* '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'.
Ancak anlayamadığım şey , bunu Drush komut satırından nasıl kullanacağım . Drush'a iletmem gereken bir seçenek var mı yoksa ayarlar dosyasında bir şey ayarlamam gerekiyor mu?
Herhangi bir bilgi çok takdir edilecektir - merakım pürüzlü!
GÜNCELLEME
Aşağıdaki cevaplara dayanarak, Drush'ın davranışını gösteren basit bir test yapabildim ve bazı sonuçlar çıkardım:
Birden fazla sitede işlem gerçekleştirirken Drush'ın varsayılan davranışı, eşzamanlı işlemleri kullanmaktır:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
Bu, takma ad kullanmadığınızda bile geçerlidir ve Drush'ın yerleşik @ siteleri takma adı kullanılırken de geçerlidir. Bu iki komut yukarıdaki gibi aynı davranışı sağlar:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
Eşzamanlı işlemlerin sayısını değiştirmek için (varsayılan değer 4'tür), drush komutunda '--concurrency = N' seçeneği geçirilebilir. Örneğin, seri yürütme istiyorsanız, eşzamanlı işlem sayısını 1 olarak ayarlayabilirim:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);" --concurrency=1
Continue? (y/n): y
site1 >> 1360513387 [status]
site2 >> 1360513393 [status]
site3 >> 1360513399 [status]