カスタムコンテンツタイプ「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() が既存のノードのロードに失敗するのでしょうか? たぶん、いくつかのキャッシュをクリアする必要がありますか?