php语言 百分网手机站

php与mysql时区设置的总结

时间:2020-11-13 11:08:23 php语言 我要投稿

php与mysql时区设置的总结

  使用国外主机空间的朋友,经常会遇到时区设置的问题。PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为'Asia/Shanghai' 即可。就跟随小编去了解下吧,想了解更多相关信息请 持续关注我们应届毕业生考试网!

php与mysql时区设置的总结

  使用国外主机空间的朋友,经常会遇到时区设置的问题。

  PHP 脚本端的市区设置可以在 php.ini 下设置 date.timezone 键的值为 'Asia/Shanghai' 即可。

  通常共享虚拟主机本身没有修改 php.ini 权限。此时就应该在程序公共部分加入:

  ini_set('date.timezone','Asia/Shanghai'); 动态修改 php.ini 的设置。之后可以测试一下时间是否正确:

  var_dump(date());如果服务器的本地时间是正确的,那么一般就能解决问题了。

  附,PHP 5.1 以上提供了专门的函数修改对应的时区:

  date_default_timezone_set('Asia/Shanghai');建议使用此函数,因为更通用一些。对应 'Asia/Shanghai' 其他可以使用的大陆时区还有:Asia/Chongqing 、Asia/Shanghai 、Asia/Urumqi (依次为重庆,上海,乌鲁木齐);港台地区可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次为澳门,香港,台北);还有新加坡:Asia/Singapore;其他可用的值是:Etc/GMT-8、Singapore、Hongkong、PRC;老外好像把北京漏调了。

  但是,在我修改成功 PHP 端的时区以后发现日期并没有正确的记录下来。这个时候我考虑是否是数据库的问题。果不其然,因为程序插入的函数并没有调用 PHP 的`时间,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。这个时候就要考虑是否能修改 MySQL 方面的时区。

  参考了 MySQL 的文档,发现一个可行的 SQL 语句为:

  SET GLOBAL time_zone = '+8:00';

  其中 '+8:00' 是东八区的表示方法,其他的市区依次类推。而我在数据库模型中插入改语句发现权限不够。

  接下来调试了很多语句,比如:

  DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR);

  显示时区的 SQL 语句:

  SHOW VARIABLES LIKE 'system_time_zone' 等等。

  由于 MySQL 权限的限制并没有彻底的解决方案。我 Google 了下,发现老外这个有一个非常好的解决方案。但是他需要修改每条插入数据的 SQL 语句。这样的方案并不是非常的有效,一旦数据库时区改成正常,那么相应的 SQL 语句又要改回来。

  而我考虑既然 PHP 端已经可以正确的解决时间的问题了。MySQL 数据库方面虽然可以使用相应的函数解决,但是如果日后迁移到别的主机环境又要改回来。而相应的字段是一个 TIMESTAMP 类型的,默认的值为 CURRECT_TIMESTAMP,当然是可以指定时间的。

  我的做法就是让 PHP 插入当前正确的时间,这样虽然程序方面需要做相应的修改。不过日后配置修改起来只要修改一处就可以了。

  最后插入数据库的时间注意一下格式:

  date('Y-m-d H:i:s')

  参考文章:

  http://www.modwest.com/help/kb6-256.html

  在自己的主机上可以这样设置:

  SET GLOBAL time_zone = '+8:00';

  可惜了,不能用 UNIX_TIMESTAMP() 这样的函数了。

【php与mysql时区设置的总结】相关文章:

1.PHP与MYSql连接与查询

2.PHP 和 MYSQL

3.php操作mysql步骤

4.PHP操如何操作mysql

5.PHP读取MySQL数据的代码方法

6.PHP实现同步远程Mysql的方法

7.PHP常用MySql操作方法

8.PHP读取MySQL数据代码方法

9.WEB中使用PHP连接MySQL的方法