0

我目前在一个预订网站上工作。我正在使用 PHP Baikal CalDav 服务器(已修改)。当通过 Mozilla Thunderbird 或 iCal 生成时,Baikal 生成的 ical 文件将 VCALENDAR(每个事件)文件作为 mysql 中的介质 blob 存储在单个列中。此外,我在我网站上的预订也存储为 VCALENDAR 文件。

如果我想检查房间是否可用,我必须获取与 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 文件(开放时间、例外情况、预订、贝加尔湖预订)时检查给定时间段内的房间可用性?

谢谢!

4

1 回答 1

1

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

您甚至可以要求它抓取该时间范围内的所有事件,并将其转换为VFREEBUSY报告,这基本上是一个简化的 VCALENDAR,准确列出了哪些时间段是开放的和未开放的。

您可以在CalDAV 规范中找到有关这些报告的更多信息

于 2013-12-10T20:58:44.950 回答