使用一个GData日历查询加载多个事件源

时间:2009-04-16 15:39:17

标签: php zend-framework rest calendar gdata-api

所以,我的问题就是这样......

我正在为我公司的Intranet门户构建一个简单的日历模块。我们使用Google(适用于您的域名的应用)日历,我希望员工能够在一个日历中查看他们订阅的所有Feed - 就像在真实的Google日历上一样!

我不仅仅使用他们提供的小工具的原因是因为我们想要一周视图。他们的小工具目前只提供完整的月份和“周日议程”视图。所以,我们想要一个周视图,基本上看起来就像整个日历中的一行(一周)。我们已经制作了这样的界面,现在我们只需要填充它。

我可以使用一个Feed来使用它。哎呀,我甚至可以使用它来处理用户订阅的所有Feed。问题是它是 sslllooowwwww 。据我所知,我可以从订阅的每个Feed中获取所有事件的唯一方法是遍历他们的Feed列表并向Google发出新的电话,询问每个Feed的事件 < / em>的。嗯,当然,如果一个人订阅了12个供稿......这需要很长时间。

可以帮助解决速度问题的一个想法是将结果存储在我们的数据库中,并偶尔为我们的100个Feed中的每一个进行更新。但是,这可能会减慢我们的服务器速度,因为它基本上会不断地查询Google,因为需要检索每个服务器的数量和时间。

问题: 有没有办法从提要列表中询问所有事件,而不是单独查询每个事件?任何帮助将不胜感激。

顺便说一句,我正在使用PHP和Zend Gdata独立库。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我已经调查了这样做的技巧,并找到了人们使用Yahoo Pipes的有趣方法。有关详细信息,请查看OUseful.infobavatuesdays。我不确定这是否一定能解决你的速度问题。

如果我在Java中这样做,我会使用执行程序同时处理所有用户的请求。

也许你可以使用ETag和缓存做些什么?在this section Google's Calendar API Developer's Guide中,它显示了为用户日历列表中的每个条目返回的etag属性。该值可用于缓存日历。每当特定日历的etag变化时,需要使用新请求刷新日历。这可以为你节省相当多的带宽。希望Zend GData API将这些元素公开给客户端代码。