Php 我希望我的系统甚至可以脱机工作。当它';如果连接到Internet,它将更新我的在线托管站点。我该怎么做?

Php 我希望我的系统甚至可以脱机工作。当它';如果连接到Internet,它将更新我的在线托管站点。我该怎么做?,php,mysql,Php,Mysql,我有一个PHP/MySQL制作的在线酒店预订系统。我在网上托管了它,还需要一些修改,但现在看起来不错 但我希望它有离线功能。它可以做它的工作,即使在离线时,一旦连接,它会改变我的在线托管网站 有点像当你在facebook上发布评论,而你离线时,它会说“我们会在你在线连接时发布”。它看起来像是本地保存的,当它连接到Internet时,它会发布/更改/更新 我该怎么做?=) 您可以通过数据库同步实现这一点,实现这一点的一般方法有两种:基于操作的或基于SQL的 您可以将更新存储在类似于缓冲区的表中,并

我有一个PHP/MySQL制作的在线酒店预订系统。我在网上托管了它,还需要一些修改,但现在看起来不错

但我希望它有离线功能。它可以做它的工作,即使在离线时,一旦连接,它会改变我的在线托管网站

有点像当你在facebook上发布评论,而你离线时,它会说“我们会在你在线连接时发布”。它看起来像是本地保存的,当它连接到Internet时,它会发布/更改/更新


我该怎么做?=)

您可以通过
数据库同步
实现这一点,实现这一点的一般方法有两种:
基于操作的
基于SQL的

  • 您可以将更新存储在类似于
    缓冲区
    的表中,并检查源代码是否与Internet连接,如果是,则从缓冲区读取,并对数据库进行更新。您应该在代码中指定逻辑。这意味着在线数据库将尝试同步
    buffer
    表中与您的特定操作相对应的操作,并且不会同步未指定的其他更改

  • 或者,您可以同步数据库:将生产代码的副本复制到本地环境,并在Internet连接可用时将数据库同步到远程端。这意味着在线数据库将是本地数据库的直接复制


  • 您可以通过
    数据库同步
    实现这一点,实现这一点的一般方法有两种:
    基于操作的
    基于SQL的

  • 您可以将更新存储在类似于
    缓冲区
    的表中,并检查源代码是否与Internet连接,如果是,则从缓冲区读取,并对数据库进行更新。您应该在代码中指定逻辑。这意味着在线数据库将尝试同步
    buffer
    表中与您的特定操作相对应的操作,并且不会同步未指定的其他更改

  • 或者,您可以同步数据库:将生产代码的副本复制到本地环境,并在Internet连接可用时将数据库同步到远程端。这意味着在线数据库将是本地数据库的直接复制


  • 你可以在这里使用插座。套接字在服务器或客户端更新某些内容时使用

    你有没有想过当你在facebook上离线,但你的手机连接到互联网时,facebook会向你发送通知警报

    首先下载客户端的socket.io框架

    当连接到internet的用户触发事件时

    var socket=io();
    socket.on("connection",function(){
        // fire an event });
    
      socket.on("disconnect",function(){
     // fire another event});
    

    你可以在这里使用插座。套接字在服务器或客户端更新某些内容时使用

    你有没有想过当你在facebook上离线,但你的手机连接到互联网时,facebook会向你发送通知警报

    首先下载客户端的socket.io框架

    当连接到internet的用户触发事件时

    var socket=io();
    socket.on("connection",function(){
        // fire an event });
    
      socket.on("disconnect",function(){
     // fire another event});
    

    正如刘浩田所解释的,虽然可以自己实现一些东西,但随着时间的推移,类似这样的解决方案很可能会留下大量损坏的数据


    一个更好的解决方案是使用一个从底层开始为此目的而设计的离线第一数据库,或者至少使用一个健壮的数据库,该数据库具有完善的离线功能,如Firebase()。

    ,而正如刘浩田所解释的,您可以自己实现某些功能,随着时间的推移,这样的解决方案很可能会给您留下大量损坏的数据


    一个更好的解决方案是使用一个从底层开始为此目的而设计的离线第一数据库,或者至少使用一个具有完善的离线功能(如Firebase())的健壮数据库。

    但请记住,这会带来巨大的不一致风险。想象一个可用的空闲和两个脱机客户端,同时进行预订,然后与主数据库同步。@franzgleichman如果有多个客户端,那么它应该使用
    操作缓冲区
    表,就像我们如何使用bin log从数据库恢复一样?你对此有何看法?但请记住,这会带来巨大的不一致风险。想象一个可用的空闲和两个脱机客户端,同时进行预订,然后与主数据库同步。@franzgleichman如果有多个客户端,那么它应该使用
    操作缓冲区
    表,就像我们如何使用bin log从数据库恢复一样?你对此有什么看法?