1

カスタムコンテンツタイプ「show」のノードを生成しているレガシーコードの問題を修正しようとしていますが、同じタイプで同じタイトルのノードがまだ存在しない場合に限ります。コードは次のようになります。

        $program = node_load(array('title' => $xml_node->program_title, 'type' => 'show'));
        if (!$program) {
          $program = new stdClass();
          $program->type = 'show';
...
          node_submit($program);
          node_save($program);
        }

そのため、スクリプトは最初に特定のタイトルの「show」コンテンツ タイプにノードをロードしようとし、失敗した場合はノードを作成します。

問題は、(ループ内で) 短時間に複数回呼び出されると、二重のノードが作成されることです。同じタイトルの2つの番組が同じ秒に作成されたように?!?

そこで何が問題になる可能性がありますか?

Drupal 6 でノードを保存する方法の例を探していました。 node_submit() を呼び出さないものもあります。その電話は必要ですか?もしそうなら、node_submit() が返したものを node_save() に渡さなければならないのでしょうか? それとも、何らかの理由で node_load() が既存のノードのロードに失敗するのでしょうか? たぶん、いくつかのキャッシュをクリアする必要がありますか?

4

1 に答える 1