当wp_Schedule_Event操作有两个可能的方向时,如何避免无限循环?

时间:2016-09-20 作者:Jonathan Stegall

我正在构建一个链接WordPress和Salesforce的插件,如下所示(在此处进行更新,以澄清该插件的功能):

  1. salesforce_push: 从WordPress向Salesforce发送数据。当在WordPress中创建/更新/删除新项目(可能是帖子、用户等,具体取决于地图设置)时,会发生这种情况,并且该数据会发送到Salesforce API以创建/更新/删除映射对象。根据项目的ID(例如,用户ID到联系人ID)进行映射
  2. salesforce_pull: 检查Salesforce中应返回WordPress的已创建/更新/删除对象(基于地图设置)。例如,在Salesforce中更新联系人;这将更新WordPress中的相应用户wp_schedule_event 方法:一推一拉。上述方法向事件发送数据,然后进行处理(调用Salesforce API方法或WordPress方法来创建/更新/删除项目)。

    目前,情况如下:

    我在WordPress(本地主机)中创建/更新/删除一个项目。下一次推送时,Salesforce也会发生同样的情况wp_schedule_event 跑步。例如,每隔5分钟,它会将新用户发送到Salesforce并为他们创建联系人,如果他们已经映射到WordPress用户,则会更新他们

  3. 我在Salesforce中创建/更新/删除映射项。下次拉动时wp_schedule_event 运行时,它从Salesforce API加载该项目的数据并将其发送到salesforce_pull 它将调用方法在WordPress中创建/更新/删除对象(这部分尚未完成)

    在#1中,根据WordPress活动创建或更新Salesforce项目时(salesforce_push), 它还尝试调用salesforce_pull 方法,因为它意识到Salesforce中发生了一些变化。

    这会创建一个无法满足的循环,因为每个系统都在尝试更新另一个系统。我一直在尝试确定在每个方法上运行哪种检查,以查看它是否刚刚被另一个方法调用,但到目前为止,我无法创建一个不停止系统中合法编辑的方法。

    我想停止的活动如下:

    WordPress用户更新个人资料,并将其发送给Salesforce并更新联系人

(这是目前发生的情况,需要明确。)

我希望允许的活动如下:

WordPress用户更新个人资料,并将其发送给Salesforce并更新联系人

1 个回复
最合适的回答,由SO网友:Nicolai Grossherr 整理而成

您应该创建一个用户数据版本索引变量,每次它更改增量时。这将有助于跟踪数据集的最新版本。您可以使用该索引的值来确定是否应该进行更新。

(评论回答)

相关推荐