我目前正在预订网站上。我正在使用PHP Baikal CalDav Server(对其进行了修改)。通过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文件(营业时间,例外,预订,贝加尔湖预订)时,他们是否有任何智能算法可以检查给定时隙中的房间可用性?
谢谢!
最佳答案
直接查询SabreDAV。它针对基于时间的查询进行了高度优化。如果您执行calendar-query
REPORT HTTP请求,并过滤开始时间和结束时间,它将仅返回与该时间范围重叠的事件。
您甚至可以要求它捕获该时间范围内的所有事件,然后将其转换为VFREEBUSY
报告,该报告基本上是简化的VCALENDAR,它准确列出了哪些时隙处于打开状态和哪些时隙未打开。
您可以在CalDAV specification中找到有关这些报告的更多信息。
关于php - PHP + CalDav + ICS房间时隙算法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20497200/