मैं Drupal मल्टी-साइट्स (सिंगल कोडबेस, मल्टीपल साइट्स / *) का उपयोग कर रहा हूं। इसके साथ ही, मैंने उन्हें प्रबंधित करने के लिए ड्रश एलियासेस का उपयोग करना शुरू कर दिया है:
$ 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" निष्पादित होगा (एक समय में एक)।
मैं अगले स्तर तक ले और सभी साइटों पर इन आदेशों को चलाने के लिए प्रयास करने के लिए करना चाहते हैं simulantiously । मैं कुछ पढ़ रहा हूं, और इस धारणा के तहत कि ड्रश वास्तव में इसका समर्थन करता है । 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 @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
यह तब भी सच है जब उपनाम का उपयोग नहीं किया जाता है, और ड्रू के अंतर्निहित @ उपनामों का उपयोग करते समय भी सच है। इन दोनों आदेशों में उपरोक्त के समान व्यवहार होता है:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
समवर्ती प्रक्रियाओं की संख्या बदलने के लिए (डिफ़ॉल्ट 4 है), ड्रंक कमांड में '--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]