G0574's Archiver

弯月圆刀 发表于 2008-9-28 14:20

google gear中大量数据复制的一种策略

gear 有本地的Database,有时候需要将服务器一侧的数据库中的内容同步到本地。这个数据很大,不适合一次请求全部返回的话,需要分成几次来下载。

这个过程可以在背后运行,用Gear的WorkerPool可以做到。取数据的动作可以用gear的HttRequest。下面以复制服务器一侧的数据库的记录到本地Database为例。

1、比如服务器的数据库中有10000条数据。我们现在分成100次下载,每次下载100条。根据gear文档的描述,HttpRequest只能异步运行(asynchronous),所以不适合将这个请求放在while或者for循环中,因为这样做会短时间内发出太多的请求。而且onreadystatechange回调函数的执行context没有详细的文档,照成无法获取环境变量。

2、所以比较合适的办法是用定时器,将异步变成同步执行。也就是设定一个全局变量,在每次request的回调函数中,改变这个值,定时器则定时查询这个变量,当变量变化时,发出下一个请求,如此往复,直到整个下载结束。

[[i] 本帖最后由 弯月圆刀 于 2008-9-28 20:29 编辑 [/i]]

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.