处理PHP和MySQL一年业务开放时间的最佳方法

时间:2015-12-11 08:35:40

标签: php mysql timestamp

我们为药房开发了一个网站,我们在该网站上展示特定城市的开设药房。

我使用一个名为“timestamps”的字段来处理这个问题,它将每15分钟的开放时间的所有时间戳存储大约3个月。 例如,如果每天从8:00到19:00打开一个farmacy,则会有一系列时间戳从一次到另一次,间隔为15分钟。

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

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

提前谢谢!

1 个答案:

答案 0 :(得分:3)

每个商店每天都可以有一个数据库:

-----------------------------------------
| 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     |
=========================================

在此表中,日期表示星期几(例如,星期一为1,星期二为2),然后您只需要为每个商店指定一次openniong小时数。

然后,您可以查询此表,以查看商店是否在当天的某一天开放。

如果药房有一天的例外关闭或开放时间,我建议像这样的一个ovveride表

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

通过这种方式,您可以先检查药房在当前日期(不取决于时间)该表中是否有任何记录,如果有,则检查是否有空缺。如果覆盖表中没有任何条目,则使用第一个表进行检查。

您还可以使用开放和关闭时间的小时模型表,日历表和创建商店,小时和天之间关系的关联表。