web-dev-qa-db-ja.com

カスタムモジュールでhook_cron_queue_infoを使用する方法

更新ボタンをクリックしてリモートデータを取得しています。自動化したい。それに関する多くの記事を読みましたが、私のモジュールでhook_cron_queue_infoを使用するための良い例が見つかりませんでした。誰かが私を助けることができますか?

6
nooshinha

hook_cron_queue_info() のドキュメントに示されているサンプルコードを見ることができます。これには、コードの使用方法に関する説明が必要です。

_function hook_cron_queue_info() {
  $queues['aggregator_feeds'] = array(
    'worker callback' => 'aggregator_refresh',
    'time' => 60,
  );
  return $queues;
}
_

コードショーは、実際にはAggregatorモジュールから作成されたhook_cron_queue_info()の実装です。 ( aggregator_cron_queue_info() を参照してください。)

"aggregator_feeds"は、処理が必要なアイテムで満たされた Drupalキュー の名前です。 "aggregator_refresh"は、Drupalがcronタスクを実行するときに、 "aggregator_feeds" Drupalキューに含まれるアイテムごとに1回ずつ)呼び出される関数の名前です。 aggregator_refresh() は、そのDrupalキューから取得したアイテムを最初のパラメーターとして取得します。

この時点で尋ねる質問は次のとおりです。Drupalキューアイテムはいつキューに追加されますか?

Aggregatorモジュールはhook_cron()実装でそれを行います ですが、他のフックを含め、どの関数もDrupalキューにアイテムを追加できます(例外を除きます) hook_cron_queue_info()および類似のフックの*)、フォーム送信ハンドラ、ページコールバック、またはそれらの関数から呼び出される関数。

* 「類似したフック」とは、情報を返し、イベントを処理するために呼び出されたり、イベントが発生したり発生したりする前に呼び出されないすべてのフックを意味します( hook_node_delete() の場合のように)。 「類似のフック」のリストに、たとえば次のように追加します。

14
kiamlaluno