Có cách nào để buộc một quy trình hàng loạt dừng lại nếu một số loại lỗi xảy ra? Cụ thể, tôi có một lô bắt đầu bằng việc lưu bản ghi vào cơ sở dữ liệu. Mỗi hoạt động lô tiếp theo phụ thuộc vào cơ sở dữ liệu chèn hoạt động chính xác. Tôi muốn buộc đợt dừng lại nếu đợt đầu tiên thất bại.
Lô được gọi như thế này
$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'
);
đâu $operations
là mảng các hàm cần gọi.
Mỗi chức năng sử dụng PDO để cập nhật cơ sở dữ liệu. Tôi đang cố gắng tìm ra cách ngăn chặn cuộc $operations
gọi tiếp theo nếu truy vấn trong hoạt động hiện tại không thành công.
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
}
Nếu xảy ra lỗi, tôi muốn bỏ qua các hoạt động còn lại và đi thẳng đến mymodule_batch_finished