2013-12-10 36 views
0

我目前正在预订网站上工作。我正在使用PHP贝加尔CalDav服务器(修改它)。当通过Mozilla Thunderbird或iCal生成时,由Baikal生成的ical文件将VCALENDAR(每个事件)文件作为mysql中的中间blob存储在单列中。 此外,我网站上的预订也存储为VCALENDAR文件。PHP + CalDav + ICS Room Timeslot算法?

如果我想检查一个房间是否可用,我必须获取每个与room_id匹配的VCALENDAR文件,并从VCALENDAR中提取信息。我不知道这个操作是否太昂贵。我尝试从VCALENDARS中“清理”数据库已经被使用,而不是经常性的。

I have to open the room_id opening hours VCALENDAR -> extract data with Sabre process 

For Loop through Exception VCALENDAR -> extract data with Sabre process 

For Loop through Baikal VCALENDAR -> extract data with Sabre process 

For Loop through Bookings VCALENDAR -> extract data with Sabre process 

-> Process All -> Return Result, if room is free in the given time. 

难道他们的任何智能算法,在给定的时隙,具有ICS文件时(开放时间,例外,预订,预订贝加尔湖),用于检查房间可用性?

谢谢!

回答

1

直接查询SabreDAV。它针对基于时间的查询进行了高度优化。如果您执行REPORT HTTP请求,并筛选开始和结束时间,它将只返回与该时间范围重叠的事件。

你甚至可以要求它抓取该时间范围内的所有事件,并将其转化为VFREEBUSY报告,该报告基本上是一个简化的VCALENDAR,它清楚地列出哪些时隙已打开且未打开。

你可以在CalDAV specification

找到更多关于这些报告的信息