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);
  }
}