summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
Diffstat (limited to 'includes')
-rw-r--r--includes/batch.inc10
-rw-r--r--includes/form.inc7
2 files changed, 14 insertions, 3 deletions
diff --git a/includes/batch.inc b/includes/batch.inc
index de47da277..4010acb36 100644
--- a/includes/batch.inc
+++ b/includes/batch.inc
@@ -263,6 +263,8 @@ function _batch_process() {
// If we are in progressive mode, break processing after 1 second.
if ($batch['progressive'] && timer_read('batch_processing') > 1000) {
+ // Record elapsed wall clock time.
+ $current_set['elapsed'] = round((microtime(TRUE) - $current_set['start']) * 1000, 2);
break;
}
}
@@ -289,11 +291,16 @@ function _batch_process() {
$current = $total - $remaining + $finished;
$percentage = $total ? floor($current / $total * 100) : 100;
+ $elapsed = $current_set['elapsed'];
+ // Estimate remaining with percentage in floating format.
+ $estimate = $elapsed * ($total - $current) / $current;
$values = array(
'@remaining' => $remaining,
'@total' => $total,
'@current' => floor($current),
'@percentage' => $percentage,
+ '@elapsed' => format_interval($elapsed / 1000),
+ '@estimate' => format_interval($estimate / 1000),
);
$message = strtr($progress_message, $values);
if (!empty($message)) {
@@ -360,7 +367,8 @@ function _batch_finished() {
include_once DRUPAL_ROOT . '/' . $batch_set['file'];
}
if (function_exists($batch_set['finished'])) {
- $batch_set['finished']($batch_set['success'], $batch_set['results'], $batch_set['operations']);
+ // Format the elapsed time when batch complete.
+ $batch_set['finished']($batch_set['success'], $batch_set['results'], $batch_set['operations'], format_interval($batch_set['elapsed'] / 1000));
}
}
}
diff --git a/includes/form.inc b/includes/form.inc
index c59eacb10..65ea10f46 100644
--- a/includes/form.inc
+++ b/includes/form.inc
@@ -2501,8 +2501,9 @@ function form_clean_id($id = NULL, $flush = FALSE) {
* 'init_message': message displayed while the processing is initialized.
* Defaults to t('Initializing.').
* 'progress_message': message displayed while processing the batch.
- * Available placeholders are @current, @remaining, @total and @percent.
- * Defaults to t('Remaining @remaining of @total.').
+ * Available placeholders are @current, @remaining, @total, @percentage,
+ * @estimate and @elapsed.
+ * Defaults to t('Completed @current of @total.').
* 'error_message': message displayed if an error occurred while processing
* the batch.
* Defaults to t('An error has occurred.').
@@ -2539,6 +2540,8 @@ function batch_set($batch_definition) {
'sandbox' => array(),
'results' => array(),
'success' => FALSE,
+ 'start' => microtime(TRUE),
+ 'elapsed' => 0,
);
// Use get_t() to allow batches at install time.
$t = get_t();