我正在开发一个PHP(CodeIgniter)/ MySQL应用程序,允许用户选择何时发布他们的博客文章。到目前为止我如何设计它的工作原理如下:
我想知道是否有更好的方法来处理这种情况,考虑到我的数据库服务器和Web服务器位于云上的不同计算机上,并且可能也会更改位置。
答案 0 :(得分:1)
由于您正在讨论 future 时间的安排,因此仅存储 UTC并不是最好的方法。
请记住,时区规则可以(并且确实)发生变化。如果您对时区数据应用更新(在PHP中,使用PECL的timezonedb包完成),那么您已转换为UTC的任何数据都可能无效。
更好的解决方案是存储多个值:
原始的本地日期和时间
原始时区(例如"America/New_York"
)
UTC日期和时间,从本地值转换
当您想查看是否有时间运行任务时,您需要将当前的UTC日期和时间与存储的UTC值进行比较。
当您应用时区更新时,您将丢弃以前所有条目的转换UTC值,并根据更新的数据重新计算新值。
如果您不这样做,那么您将失去用户最初提供的意图。如果您不及时更新您的时区数据,那么您的系统将无法了解全球各地发生的各种变化,例如今年早些时候在埃及发生的变化,或者10月份发生的变化对于俄罗斯。
最后一点 - 如果实施得当,服务器的时区应该无关紧要。比较UTC与UTC。