なんらかのエラーが発生した場合にバッチプロセスを強制的に停止する方法はありますか?特に、レコードをデータベースに保存することから始まるバッチがあります。後続の各バッチ操作は、データベースの挿入が正しく機能していることに依存しています。最初のバッチが失敗した場合、バッチを強制的に停止したいと思います。
バッチはこのように呼ばれます
$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'
);
どこ$operations
に呼び出す関数の配列です。
各関数はPDOを使用してデータベースを更新します。$operations
現在の操作でクエリが失敗した場合に後続のメソッドが呼び出されないようにする方法を理解しようとしています。
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
}
エラーが発生した場合は、残りの操作をバイパスして直接 mymodule_batch_finished
現在、データベースへの保存をどのように実行していますか?バッチプロセスをトリガーするものは何ですか?
—
ランデル、2014年
質問に答えるために詳細を追加しました。
—
ロバート