バッチリクエストのあるページが閉じている場合、バッチ処理は停止しますか?
はい、停止します。
同じURLを再度開いたときに再起動しますか?移行モジュールは継続する場合がありますが、おそらくキューを使用していますか?
Dineshが言ったように、それは実装に依存します。
drushを使用して移行を実行する必要があります。
Drushはコマンドラインで実行され、時間制限はありません(特に、PHPのmax_execution_timeは適用されません)。そのため、drushを使用して実行する移行プロセスを開始すると、単に起動し、完了するまで実行を続けます。
Webインターフェースを介してプロセスを実行する場合、PHPのmax_execution_time(通常、少なくとも30秒)が適用されます。したがって、長時間実行されるプロセスの場合、複数のリクエストにまたがるプロセスの分割を管理するバッチAPIを使用する必要があります。そのため、移行プロセスが開始され、25秒程度実行された後、停止され、バッチAPIが新しいページリクエストを発行し、移行プロセスが無限に再起動されます。
だから、それを理解して、なぜDrushが優れているのですか?
速いです
バッチAPIは多くのオーバーヘッドをもたらします-シャットダウンしてページリクエストを再度呼び出し、移行プロセスは必要なすべてのコンストラクターを再度実行する必要があり、データベース接続は再確立され、クエリは再実行されます。最初の500個のソースレコードがインポートされた場合、501番目のレコードを見つける必要があります。ソース形式とその構成方法に応じて、これはスケーリングされる場合とされない場合があります。SQLソースで最高水準点を使用している場合、クエリ自体は以前のレコードを削除し、中断したところから開始できます。そうでない場合、Migrateはソースデータをスクロールして、インポートされていない最初のレコードを探します。たとえば、大きなXMLファイルをソースとして使用すると、
より信頼性が高い
ブラウザから移行を実行すると、デスクトップとローカルインターネット接続が障害ポイントとして追加されます。Batch APIが次のページリクエストに移動しているときのネットワークの不具合、ブラウザのクラッシュ、誤ったタブまたはウィンドウの偶発的なクローズはすべて、移行を中断する可能性があります。急いで実行すると、可動部分が減ります-デスクトップおよびローカルインターネット接続を要因として排除します。
もっと役立つ
Drushで実行中に何か問題が発生した場合、有用なエラーメッセージがあれば、それらが表示されます。バッチAPIを使用した失敗はしばしば飲み込まれ、完全に役に立たない「AJAX HTTPリクエストが異常終了しました。デバッグ情報が続きます。パス:/ batch?id = 901&op = do StatusText:ResponseText:ReadyState:4 "
詳細については、こちらをご覧ください。
それまでの間、ブラウザウィンドウが閉じていてもバッチを実行する場合は、バックグラウンドプロセスモジュールを検討してください。トリックを行うサブモジュールBackground Batchがあります。
このモジュールは、既存のバッチAPIを引き継ぎ、バックグラウンドプロセスでバッチジョブを実行します。つまり、バッチページを離れてもジョブは続行され、後で進行状況インジケーターに戻ることができます。