Gibt es eine Möglichkeit, einen Batch-Prozess zum Stoppen zu zwingen, wenn ein Fehler auftritt? Insbesondere habe ich einen Stapel, der mit dem Speichern eines Datensatzes in einer Datenbank beginnt. Jede nachfolgende Stapeloperation hängt davon ab, ob die Datenbankeinfügung ordnungsgemäß funktioniert. Ich möchte den Stapel zum Stoppen zwingen, wenn der erste Stapel fehlschlägt.
Die Charge heißt so
$batch = array(
'operations' => $operations,
'finished' => 'mymodule_batch_finished',
'title' => t('Merging records'),
'init_message' => t('Starting processing'),
'progress_message' => t('Processed @current out of @total.'),
'error_message' => t('Processing has encountered an error'),
'file' => drupal_get_path('module', 'mymodule') . '/forms/mymodule.inc'
);
Wo $operations
ist das Array der aufzurufenden Funktionen?
Jede Funktion verwendet PDO zum Aktualisieren der Datenbank. Ich versuche herauszufinden, wie verhindert werden kann, dass die nachfolgende $operations
aufgerufen wird, wenn die Abfrage in der aktuellen Operation fehlschlägt.
try {
$sth = $dbh->prepare($sql);
$sth->bindParam(':newid',$new_id,PDO::PARAM_INT);
$sth->bindParam(':id',$id,PDO::PARAM_INT);
if($sth->execute()) {
$context['results']['[] = $sth->rowCount();
}
else {
// TODO: stop processing due to an error
}
}
catch(PDOException $e) {
// TODO: stop processing due to an error
}
Wenn ein Fehler auftritt, möchte ich die verbleibenden Vorgänge umgehen und direkt zu gehen mymodule_batch_finished