drupal drupal-nodes

¿Cómo evitar los errores de ''falta de memoria'' cuando se generan programáticamente muchos nodos en drupal?



drupal-nodes (2)

¿Alguna vez ha usado las operaciones a granel de Views? ( http://drupal.org/project/views_bulk_operations ) viene con una vista agrupada que se muestra en admin / content / node2, puede editarla para habilitar una acción "Ejecutar código PHP", así como activar la API por lotes. es la forma más fácil de modificar programáticamente nodos.

sin embargo, dado que está creando los nodos, simplemente debe desactivar $ node al final de la instrucción, y debería atenuar el uso de la memoria. tratar:

for($i=0; $i 150; $i++) { $node = new stdClass(); $node->title="Foo $i"; $node->field_myfield[0][''value''] = "Bar $i"; ... node_save($node); unset($node); }
}

Estoy creando aproximadamente 150 nodos mediante programación y ejecutándolos en errores de "falta de memoria" cuando lo hago todo en una sola solicitud. (Tengo una devolución de llamada de menú que genera los nodos y llama a node_save () sobre ellos).

Ejemplo:

for($i=0; $i<150; $i++) { $node = new stdClass(); $node->title="Foo $i"; $node->field_myfield[0][''value''] = "Bar $i"; ... node_save($node); }

He oído hablar de BatchAPI, pero nunca lo he usado. ¿Es esa la herramienta adecuada para evitar esto? Los documentos hablan de tiempos de espera, pero no de problemas de memoria. ¿Hay algo más simple que pueda estar perdiendo?


Sí, Batch API puede resolver este problema. Romperá su uso de memoria en solicitudes HTTP separadas, cada una con acceso a su límite de memoria completo.