Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+;MySQL构建服务器时区无关脚本?_Php_Mysql - Fatal编程技术网

PHP+;MySQL构建服务器时区无关脚本?

PHP+;MySQL构建服务器时区无关脚本?,php,mysql,Php,Mysql,在构建PHP应用程序时,我总是很难在服务器时间和时区内让一切正常运行 我通常在我的大多数记录上都有一个简单的类似时间戳的字段,它没有被更新——只是出于引用目的而静态的。我使用它来跟踪事件发生的时间、用户注册的时间、创建评论的时间等 我一直在尝试遵循使用Datetime字段存储此值的最佳实践。问题是,当使用不同的服务器时,它们通常有不同的时区,因此日期时间甚至不匹配,除非我添加更多代码来抵消这些差异。在使用MySQL复制和NOW()查询时,这也可能是一个问题,因为它们的查询通常是滞后的 我想知道我

在构建PHP应用程序时,我总是很难在服务器时间和时区内让一切正常运行

我通常在我的大多数记录上都有一个简单的类似时间戳的字段,它没有被更新——只是出于引用目的而静态的。我使用它来跟踪事件发生的时间、用户注册的时间、创建评论的时间等

我一直在尝试遵循使用Datetime字段存储此值的最佳实践。问题是,当使用不同的服务器时,它们通常有不同的时区,因此日期时间甚至不匹配,除非我添加更多代码来抵消这些差异。在使用MySQL复制和
NOW()
查询时,这也可能是一个问题,因为它们的查询通常是滞后的

我想知道我是否应该重新使用ints,因为他们似乎不关心时区,只需要设置服务器时钟。缺点是所有MySQL日期/时间函数(我从未使用过)都无法使用,这在将来可能会成为一个问题。这样做的好处是,我可以通过将存储空间移回4字节整数而不是datetimes,将存储空间减半


人们还提到ints只能在2037年前工作-为什么这是一个问题?2037年谁会使用PHP+MySQL


我有什么遗漏吗?以不可知的方式(如Unix时间戳)存储参考时间是否更好?

我在所有数据库工作中使用日期/时间字段,但将所有内容都存储在GMT中。几乎是我的代码第一次有机会将某些内容转换为GMT,并以GMT进行所有内部计算,我唯一一次将它从格林尼治时间转换回本地时间是在向用户显示时。PHP有unixtime(),即GMT,再加上gmstrftime和gmdate,几乎可以满足您的任何需要。

“谁会期望2037年使用PHP+MySQL?”-谁会期望2011年人们仍然使用IPv4作为主协议,或者像IE6这样过时的软件……所以你可以选择我应该继续努力,将所有服务器正确设置为
date\u default\u timezone\u set('GMT')
以及MySQL?date\u default\u timezone\u set看起来会有所帮助。我从来没有把它作为php的一个新添加使用过,我也试着把我的大部分东西编写成可以在旧版本上使用的代码。我只需要手动进行任何需要的时区转换。