关于服务器的差异化(另说增量)更新
不明白要如何做,目前属于服务器小白
比如两个用户,服务器数据目前有10条,A和B都更新了
过了一会,服务器有更新,数据从10条增加到了15条
A更新了,app本地的数据从10条变成了15条;但是B没更新,还是10条;
再过了一会,服务器数据又更新了,数据从15条增加到了20条
那我怎么让A只增加更新的5条(15到20的),让B更新10条(10到20的)呢?
回复讨论(解决方案)
我自己来吧
把当前数据序号(这里就用id)的最大值传给app,app记录下来
一开始A和B同时进行更新,他俩都是10
更新的时候,给服务器发数据序号(这里就用id)这个过去,服务器通过select * from XXX where id >= app本地数据序号进行查询
A更新的时候(从10条变成了15条)那么当前这个id是15;B没进行更新,他还是10;
再次更新的时候,同理,服务器只会给A发送16到20的数据,对于B服务器发送11到20的数据,让他们增量更新
针对于简单的逻辑(只是对数据的新增),上面的部分已经解决了
但这里又出现一个新问题,服务器的数据进行更改或者标记删除?怎么办?
那么你需要看下面的处理:
新增一个字段mark一开始设置为0
一开始A和B同时进行更新(都更新了10条数据),把mark为0的都更新过去了,本地的mark为0
现在对表中的数据更新(从10到15),对里面的某条数据进行修改(第3条),对第5条进行删除(标记为-1);现在服务器的数据mark标记10到15的为1(1到10的还是不变为0)
A进行了更新(从10到15),他本地的mark变成了1;B没更新mark本地还是0;
服务器的数据再次更新(从15到20)
这时A和B都更新,A给服务器传mark的值为1,服务器查找比mark大的标记(15到20条数据)发给A;同理,给B发送mark大于0的标记(10到20条数据);他俩也能达到差异更新
现在来看看上面的,如果对数据进行修改了,怎么办?
假如上面所说的服务器对第3条数据进行了修改,那么我们约定mark+2为修改的,app在碰到mark+2的,就要对这条数据进行更新,具体更新客户端来做;同样标记删除的,我们约定为-1,那是标记不显示出来;
现在问题又来了
假如目前服务器的mark标记已经达到了5000,一个app他从未更新,现在还是0(类似情况也适用于新安装的客户端);那么他需要同时更新到5000(可能数据有十来万),这怎么办?
所以要加一个限定,我们假设app上传本地mark的时候,服务器判断,他和服务器中最大的mark相差超过50,我们只给其发送最大-50的数据(用在这里就是4950到5000的数据列),这样就减少了客户端的压力
那么,可能就要问了,期间的数据怎么办?
首选丢弃。。第二选择,可以选择一个小版本,对这部分的处理。
不过参考微信和qq的数据,他们也是对这部分进行删除的,我们还给她保留可点。。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

文章讨论了PHP 5.3中引入的PHP中的晚期静态结合(LSB),从而允许静态方法的运行时分辨率调用以获得更灵活的继承。 LSB的实用应用和潜在的触摸
