プロジェクトを開発する場合、名刺サイトよりも困難です。多くの場合、大量のデータを処理する必要があります。 多くの場合、顧客は1Cとの統合、既存の価格のインポート、Yandexマーケットへのアップロード、どこからでも移行することを望んでいます。 明らかに、1回の実行で1000個のノードを作成しても機能しません。もしそうであれば、別名
バッチ操作が
役立ちます 。
やり直しましょう。
モジュール作成
例/example.info
name = example description = "example batch" core = 7.x version = "7.x-0.1"
例/example.module
<?php function example_menu() { $items["example"] = array( "title" => "Example", "type" => MENU_NORMAL_ITEM, "page callback" => "drupal_get_form",
ここには、システムにメニュー項目を登録する基本モジュールがあり、クリックするとボタンのあるフォームが表示されます。 このアイテムは、サイトを構成する権限を持つユーザー、つまり、リンクはもちろん、ページはもちろん、Drupalも表示されないユーザーのみが利用できます。
フォーム処理とバッチ操作の登録
例/example.module
バッチ操作
例/example.module
$ context ['sandbox']-サンドボックス、パッケージのこの関数にのみ属するデータ、
(もし)example_batch_1になると、サンドボックスは再びクリーンになります。これにより、現在の操作のどのステップであるかを知ることができます
$ context ['result']-パッケージのすべての機能が実行されるときに利用できるデータの一部
$ context ['message']-ブラウザに送信される文字列。この場合、現在の操作の経過時間と一般的な進行状況が表示されます
$ context ['finished']-この値により、システムは現在の操作が完了したかどうかを把握できます。1または結果が存在しないことは、すべてがここで既に行われていることを意味し、0から1の値はバッチ操作全体の進行状況を表示するために使用されます
バッチ操作の完了
function example_batch_finished($success, $results, $operations) { if ($success) { drupal_set_message('yep'); } else { drupal_set_message('nope', 'error'); } }
$ success-パッケージがエラーなしで完了したことを意味します
$ results-私たちの結果
$オペレーション-異なるパッケージに同じ仕上げを使用できるため、オペレーション
最後に
大きなデータ構造を引数として渡したり、サンドボックスに保存したり、結果に出力したりしないでください。 Drupalは1回の実行で操作を接着できますが、実行間でこれらの構造はデータベースに保存されます。 データベース内の大量のデータは送信されません。
次回、中間データを保存できる場所について。