ฉันกำลังใช้ Drupal multi-sites (รหัสฐานเดียวหลายไซต์ / *) นอกจากนี้ฉันเริ่มใช้นามแฝง 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" ในแต่ละไซต์ของฉันในซีรีส์ (หนึ่งครั้ง)
ผมอยากจะใช้เวลานี้ในระดับต่อไปและพยายามที่จะเรียกใช้คำสั่งเหล่านี้บนเว็บไซต์ทั้งหมด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 หรือฉันต้องตั้งค่าบางอย่างในไฟล์การตั้งค่าหรือไม่?
ข้อมูลใด ๆ ที่จะได้รับการชื่นชมมาก - ความอยากรู้ของฉันป่องๆ!
UPDATE
จากคำตอบด้านล่างนี้ฉันสามารถสร้างการทดสอบอย่างง่าย ๆ ที่แสดงพฤติกรรมของ 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 คำสั่งสองคำสั่งเหล่านี้ให้ผลการทำงานที่เหมือนกันกับด้านบน:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
หากต้องการเปลี่ยนจำนวนกระบวนการที่เกิดขึ้นพร้อมกัน (ค่าเริ่มต้นคือ 4) ตัวเลือก '--concurrency = N' สามารถส่งผ่านได้ในคำสั่ง drush ตัวอย่างเช่นถ้าฉันต้องการประมวลผลแบบอนุกรมฉันสามารถกำหนดจำนวนกระบวนการที่เกิดขึ้นพร้อมกันเป็น 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]