Tôi đang cố gắng tạo một lệnh drush để chạy một quy trình hàng loạt. Khi tôi chạy lệnh, lô chỉ chạy một lần và tôi gặp lỗi này:
Trong
Drupal\search_api_solr\SolrConnector\SolrConnectorPluginBase->handleHttpException() (dòng 1026 của
/var/www/html/web/modules/contrib/search_api_solr/src/SolrConnector/SolrConnectorPluginBase.php).
Drupal\search_api_solr\SearchApiSolrException: Điểm cuối Solr
http://solr:8983/ không tìm thấy (mã: 404
Đây là mã của tôi, tôi có làm gì sai không? Cảm ơn bạn đã giúp đỡ:
lớp Drush9CustomCommands mở rộng DrushCommands {
sử dụng StringTranslationTrait;
$entityTypeManager riêng tư;
$logger được bảo vệ;
$batchService được bảo vệ;
chức năng công khai __construct(EntityTypeManagerInterface $entityTypeManager, LoggerInterface $logger, BatchService $batch_service) {
cha mẹ::__construct();
$this->entityTypeManager = $entityTypeManager;
$this->logger = $logger;
$this->batchService = $batch_service;
}
/**
* Cập nhật nút.
*
* @command cập nhật: nút
* Nút cập nhật @aliases
*
* cập nhật @usage: nút foo
* foo là loại nút để cập nhật
*/
cập nhật chức năng công khaiNode() {
$batch = mảng (
'tiêu đề' => t('Đang xuất'),
'hoạt động' => mảng (
mảng([$this->batchService,'processMyNode'], mảng()),
),
'đã hoàn thành' => [$this->batchService,'processMyNodeFinished'],
);
batch_set($batch);
drush_backend_batch_ process();
}
}
Batchservice.php
lớp BatchService triển khai ContainerInjectionInterface {
sử dụng StringTranslationTrait;
$messenger được bảo vệ;
hàm công khai __construct(MessengerInterface $messenger) {
$this->messenger = $messenger;
}
/**
* {@inheritDoc}
*/
tạo hàm tĩnh công khai (ContainerInterface $container) {
trả về tĩnh mới (
$container->get('sứ giả')
);
}
/**
* Gọi lại quá trình hàng loạt.
*
* @param int $id
* Id của lô.
* Chuỗi @param $ operation_details
* Chi tiết của hoạt động.
* đối tượng @param $context
* Bối cảnh cho các hoạt động.
*/
chức năng công khai processMyNode( &$context) {
if (!isset($context['sandbox']['total'])) {
// Nhận id trải nghiệm nút.
$query = \Drupal::entityTypeManager()->getStorage('node')->getQuery();
$nids = $query
-> điều kiện ('loại', 'mynode')
-> phạm vi (0,1000)
-> kiểm tra truy cập (SAI)
->thực thi();
$context['sandbox']['total'] = đếm($nids);
$context['sandbox']['node_ids'] = $nids;
$context['sandbox']['current'] = 0;
}
$node_ids = array_slice($context['sandbox']['node_ids'], $context['sandbox']['current'], 25);
foreach ($node_ids là $nid) {
$node = \Drupal::entityTypeManager()->getStorage('node')->load($nid);
$node->set('field_my_field', 'giá trị trường của tôi');
$node->save();
}
$context['sandbox']['current'] += count($node_ids);
\Drupal::logger('test')->notice($context['sandbox']['current'] . ' Trải nghiệm đã qua / ' . $context['sandbox']['total']);
if ($context['sandbox']['total'] == 0) {
$context['sandbox']['#finished'] = 1;
}
khác {
$context['sandbox']['#finished'] = ($context['sandbox']['current'] / $context['sandbox']['total']);
}
}
/**
* Batch Xong gọi lại.
*
* @param bool $ thành công
* Thành công của ca mổ.
* @param mảng $results
* Mảng kết quả để xử lý sau.
* @param mảng hoạt động $
* Mảng các phép toán.
*/
hàm công khai processMyNodeFinished($success, mảng $results, mảng $operations) {
nếu ($ thành công) {
$message = \Drupal::translation()->formatPlural(count($results), 'Đã xử lý một bài đăng.', '@count bài đăng đã xử lý.');
}
khác {
$message = t('Đã hoàn tất có lỗi.');
}
\Drupal::logger('teset')->notice($message);
}
}