Dashboard type that has the details of each school. Can edit their information and other data.@H_301_3@
现在,这些学校被部署到相应的学校位置,这将是本地服务器.@H_301_3@
Dashboard type that can only edit the specific school deployed in the local server. Can edit their information and other data.@H_301_3@
现在我想要发生的是,如果发生了变化,将云同步到相应学校的本地服务器.这也适用于本地云服务器.@H_301_3@
Note: If you guys ever tried Evernote,that can edit the notes information on whatever device you’re using and still be able to
synchronize when you have internet or manually clicked synchronize.@H_301_3@When the local server doesn’t have internet connection and edited some data in school. Once the internet is up,the data from local and cloud server should be synchronize.@H_301_3@
That’s the logic that I’m pursuing to have.@H_301_3@
@H_301_3@
有人会为我开始从哪里开始?我想不出任何适合我的问题的解决方案.@H_301_3@
我还想到使用PHP来遍历整个表和对应于当前日期和时间的数据.但我知道那会很糟糕.@H_301_3@
编辑:我删除了有关此事的其他SO问题的参考/帖子.@H_301_3@
我找到的应用程序挂钩@H_301_3@
> Evernote
> Todoist@H_301_3@
服务器:@H_301_3@
>本地服务器计算机:Windows 10(部署在学校)
>云服务器:可能是一些使用PHPmyadmin的专用主机@H_301_3@
>确保我们要同步的每个表都具有Created的日期时间列;改性; &安培;删除.它们也有一个布尔的isDeleted列(因此,不是物理删除记录,我们会将其标记为true并在查询中忽略它).这意味着我们可以查询自特定时间以来已删除的任何记录,并返回这些已删除ID的数组.
>在每个DB(主服务器和从服务器)中创建一个存储上次成功同步日期时间的表.在master中,这个表存储了多个记录:每个学校1个,但在slave中只需要1个记录 – 最后一次与master同步.@H_301_3@
在你的情况下,每个奴隶每隔一段时间就会:@H_301_3@
>调用主服务器的Web服务(URL),称为“helloMaster”.它将传递学校名称(或某些特定标识符),他们最后一次成功与主人同步,身份验证详细信息(为了安全),并期望主人回答主人是否有自该日期以来学校的任何更新提供.这里的重点只是寻找主人可用和收听的确认(即互联网仍在运行).
>然后,奴隶会打电话给另一个网络服务,让我们称之为’sendUpdates’.它将再次传入学校名称,上次成功同步,(加上安全认证详细信息)&自上次同步以来,任何添加,更新和删除记录的三个数组.主人只是确认收到.如果确认收据,则从属设备移动到步骤3,否则从属设备将在暂停一段时间后再次尝试步骤1.所以现在Master拥有来自奴隶的更新.注意:如果与其挂起的从属更新存在冲突,则由主服务器决定如何合并任何记录.
>奴隶然后调用web服务,让我们说’getUpdates’.它传递学校名称,安全认证详细信息,&然后,主服务器返回三个数组,用于任何添加,更新和删除的记录,其中奴隶应该应用于其数据库.
>最后,一旦奴隶试图更新其记录,它将通过另一个网络服务通知主人成功/失败,比如’updateStatus’.如果成功,则主服务器将返回一个新的同步日期供从服务器存储(这将与主服务器在其表中存储的日期完全匹配).如果失败则会在主服务器中记录错误,我们会在暂停后返回步骤1.@H_301_3@
我遗漏了一些关于错误处理的细节,让所有设备的时间准确(可能涉及不同的时区),以及其他一些零碎,但这就是它的要点.@H_301_3@
我可以在考虑更多(或其他人可能编辑我的帖子)之后进行改进.@H_301_3@
希望至少有所帮助.@H_301_3@