Tôi đang sử dụng nhiều trang web Drupal (codebase đơn, nhiều trang web / *). Cùng với điều này, tôi đã bắt đầu sử dụng bí danh Drush để quản lý chúng:
$ cat sites/all/drush/aliases.drushrc.php
<?php
$aliases['localdev'] = array(
'site-list' => array(
'site1',
'site2',
'site3',
),
);
?>
Điều này cho phép tôi dễ dàng thực hiện các hành động trên tất cả các trang web:
$ drush @localdev cc all
>> Tôi cũng vừa phát hiện ra rằng tôi chỉ có thể sử dụng @sites và từ bỏ tệp drushrc .
Làm điều này, sẽ thực thi "cc all" trên mỗi trang web của tôi theo chuỗi (mỗi lần một trang).
Tôi muốn đưa nó lên cấp độ tiếp theo và thử chạy các lệnh này trên tất cả các trang web một cách mô phỏng . Tôi đã làm một số đọc, và sáng ấn tượng rằng Drush không thực sự hỗ trợ này. Hàm drush_invoke_ process () lấy $ backend_options, có thể chứa (từ tài liệu hàm):
* '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'.
Tuy nhiên, điều tôi không thể tìm ra là làm thế nào để tôi thực sự sử dụng nó từ dòng lệnh Drush . Có một tùy chọn tôi cần chuyển đến Drush không, hay tôi cần đặt thứ gì đó trong tệp cài đặt?
Bất kỳ thông tin sẽ được nhiều đánh giá cao - sự tò mò của tôi được khơi dậy!
CẬP NHẬT
Dựa trên các câu trả lời dưới đây, tôi đã có thể tạo một bài kiểm tra đơn giản thể hiện hành vi của Drush và rút ra một số kết luận:
Hành vi mặc định của Drush khi thực hiện các hoạt động trên nhiều trang web là sử dụng các quy trình đồng thời:
$ drush @localdev ev "drupal_set_message(time()); sleep(5);"
Continue? (y/n): y
site1 >> 1360512943 [status]
site2 >> 1360512943 [status]
site3 >> 1360512943 [status]
Điều này đúng ngay cả khi không sử dụng bí danh và cũng đúng khi sử dụng bí danh @sites tích hợp của Drush. Hai lệnh này mang lại hành vi giống hệt như trên:
$ drush site1,site2,site3 ev "drupal_set_message(time()); sleep(5);"
$ drush @sites ev "drupal_set_message(time()); sleep(5);"
Để thay đổi số lượng quy trình đồng thời (mặc định là 4), tùy chọn '--concurrency = N' có thể được thông qua trong lệnh drush. Ví dụ: nếu tôi muốn thực hiện nối tiếp, tôi có thể đặt số lượng quy trình đồng thời thành 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]