123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * @file
- * Drush batch API.
- *
- * This file contains a fork of the Drupal Batch API that has been drastically
- * simplified and tailored to Drush's unique use case.
- *
- * The existing API is very targeted towards environments that are web accessible,
- * and would frequently attempt to redirect the user which would result in the
- * drush process being completely destroyed with no hope of recovery.
- *
- * While the original API does offer a 'non progressive' mode which simply
- * calls each operation in sequence within the current process, in most
- * implementations (Drupal 5 and 6), it would still attempt to redirect
- * unless very specific conditions were met.
- *
- * When operating in 'non progressive' mode, Drush would experience the problems
- * that the API was written to solve in the first place, specifically that processes
- * would exceed the available memory and exit with an error.
- *
- * Each major release of Drupal has also had slightly different implementations
- * of the batch API, and this provides a uniform interface to all of these
- * implementations.
- *
- */
- /**
- * Process a Drupal batch by spawning multiple Drush processes.
- *
- * This function will include the correct batch engine for the current
- * major version of Drupal, and will make use of the drush_backend_invoke
- * system to spawn multiple worker threads to handle the processing of
- * the current batch, while keeping track of available memory.
- *
- * The batch system will process as many batch sets as possible until
- * the entire batch has been completed or half of the available memory
- * has been used.
- *
- * This function is a drop in replacement for the existing batch_process()
- * function of Drupal.
- *
- * @param command
- * The command to call for the back end process. By default this will be
- * the 'backend-process' command, but some commands such as updatedb will
- * have special initialization requirements, and will need to define and
- * use their own command.
- *
- */
- function drush_backend_batch_process($command = 'batch-process') {
- drush_include_engine('drupal', 'batch', drush_drupal_major_version());
- _drush_backend_batch_process($command);
- }
- /**
- * Process sets from the specified batch.
- *
- * This function is called by the worker process that is spawned by the
- * drush_backend_batch_process function.
- *
- * The command called needs to call this function after it's special bootstrap
- * requirements have been taken care of.
- */
- function drush_batch_command($id) {
- include_once('includes/batch.inc');
- drush_include_engine('drupal', 'batch', drush_drupal_major_version());
- _drush_batch_command($id);
- }
|