This method actually worked very nicely today:
$query = \Drupal::entityQuery('node') ->condition('type', 'aci_user_data'); $nids = $query->execute(); $chunks = array_chunk($nids, 100); // Here you're creating chunks of Node IDs. $all_nodes = []; foreach ($chunks as $chunk) { $nodes = Node::loadMultiple($chunk); // Loading nodes by IDs. $all_nodes = $all_nodes + $nodes; // Merging all nodes in one array. \Drupal::entityTypeManager()->getStorage('node')->resetCache($chunk); \Drupal::entityTypeManager()->getStorage('node')->resetCache($nodes); //print "Mem usage: ".memory_get_usage(true)."\n
"; } // Prepare CSV data. $csv_data = []; $csv_data[] = ['Title', 'Record Created Date', 'field_aci_dashboard_array', 'field_aci_drupal_user_id', 'field_aci_results_array', 'field_aci_user_email', 'field_aci_uuid']; // Replace with your field names. $count = 0; foreach ($all_nodes as $node) {
https://drupal.stackexchange.com/questions/280707/why-does-this-code-us…
supposedly this works also:
$memory_cache = \Drupal::service('entity.memory_cache'); $entity_storage = \Drupal::entityTypeManager()->getStorage('node'); $nids = \Drupal::entityQuery('node') ->condition('type', 'issues') ->execute(); $chunks = array_chunk($nids, 100); foreach ($chunks as $chunk) { $entities = $entity_storage->loadMultiple($chunk); foreach ($entities as $entity) { // Do your stuff with the node/other entities. } $memory_cache->deleteAll(); }