PHP和MySQL是处理一年中开业时间的最佳方式


Best way to handle business opening time in a year PHP and MySQL

我们为药店开发了一个网站,在该网站上我们可以显示特定城市已开业的药店。

我用一个名为"时间戳"的字段来处理这个问题,在这个字段中,它每15分钟存储一次营业时间的所有时间戳,持续大约3个月。例如,如果农场每天从8:00到19:00开放,那么从一个时间到另一个时间都有一系列时间戳,间隔为15分钟。

在前端,我们有一个打开的药店列表,我可以通过查询数据库来显示打开的药店,例如:"WHERE timestamps LIKE('%1449820800%')",其中时间戳是四舍五入到最接近的一刻钟的当前时间。

问题是:考虑到每周的时间范围不同,有更好的方法来处理这种情况吗?此外,因为我们有25000名用户,如果我们有大量的时间戳,网站会很慢。

提前谢谢!

您可以拥有一个数据库,其中包含每个商店每天打开的内容:

-----------------------------------------
| StoreId  | Day | HourOpen | HourClose |
=========================================
|        1 |   1 | 8:30     | 21:15     |
-----------------------------------------
|        1 |   2 | 9:00     | 17:00     |
-----------------------------------------
|        2 |   1 | 10:00    | 12:30     |
-----------------------------------------
|        2 |   1 | 14:00    | 19:00     |
=========================================

在这个表中,day表示一周中的哪一天(例如,1表示星期一,2表示星期二),然后您只需要为每个商店的营业时间设置一次参数。

然后,您可以查询此表,查看商店是否在一周中的某一天营业。

如果一家药店有例外的关闭或一天的营业时间,我建议使用像这样的ovveride表格

----------------------------------------------------------
| StoreId  | Date        | isOpen | HourOpen | HourClose |
==========================================================
|        1 | 2015-12-20  |  true  | 10:00    | 16:00     |
----------------------------------------------------------
|        2 | 2015-12-20  | false  | null     | null      |
==========================================================

这样,您可以首先检查药房是否在该表中有当天的记录(不取决于时间)。如果有,您可以检查是否有空位。如果替代表中没有任何条目,则使用第一个表进行检查。

您还可以创建一个具有打开和关闭时间的小时模型表、一个日期表以及一个创建商店、小时和日期之间关系的关联表。