無標題文檔

有关 PHP 和 MySQL 时区的一点总结

由于暂时使用国外的空间,在我发布 Blog 的时候发现时间总是不对。依据我以前编写程序的经验,这是时区的问题。这个问题解决起来并不难,写下我的解决途径以便日后参考。

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')

这样就可以解决问题了。附,一些非常好的参考资料:

  1. http://www.modwest.com/help/kb6-256.html
  2. http://topic.csdn.net/t/20060503/07/4728521.html
  3. http://www.phpchina.com/5173/viewspace_5132.html
  4. http://www.phpx.com/pth110355.php

更新:由此 wiLdGoose 兄说他也碰到同样的问题,但是无法解决。结果经过种种的假设和判断以后,到最后发现原来是 Zend Studio 的时区配置问题(我狂汗ing)。看来除去运行环境,开发环境也是需要注意以下的。

无聊会议中的涂鸦

有时候技术人员就是怕开会,毕竟有些东西我们是不关心的。但由于「种种」的原因我们不得不参加这样的会议。而在「浪费」无聊人生的同时我们伟大的技术人员就会做些「无聊的事情」,比如在会议上随手涂鸦。我 「有幸」参加了这样的会议,于是乎我就做出了些和公司「不兼容、不和×谐」的举动。

https://friable.rocks/_/2007_11_16/1195209773.jpg

咳咳,这个是无敌猪!它身披铠甲,手持作战武器,HP 为惊人的 1e10(这辈子都不用喝红了)。但是它唯一的遗憾就是没有头发。

https://friable.rocks/_/2007_11_16/1195209923.jpg

下面出场的是无敌猪永远的对手 -- 金刚猫。别看它弱小的身体,但是它尾巴上的蝴蝶结已经出卖了它。它那间不可摧的牙齿似乎能咬掉一切东西(沙丁鱼罐头、肉末粉丝、蟹糊酱等)。

https://friable.rocks/_/2007_11_16/1195209429.jpg

谁说开会的时候就不能泡妞了?!下面是两只栗子的爱情故事。他们在一个阳光明媚的早晨,迎着乌鸦的叫声(淫×叫?!)。栗子哥哥终于按耐不住心中澎湃的心绪拖着一朵小花(竞猜时间:到底栗子哥哥拿的是什么花呢?猜中将本人初吻一个),向栗子妹妹表白。

https://friable.rocks/_/2007_11_16/1195209446.jpg

上面是放大的版本,但愿栗子哥哥能成功!有关后续,Gracecode.com 会陆续报道请持续关注本 Blog!最后,在议会上涂鸦是非常不道德的行为,它破坏了公司的纪律、公司的发展以及公司对你的期望。请各位看官切勿模仿,否则被自己伟大、纯真、善良的主管看见了后果不堪设想。

附,上述涂鸦大图 打包下载

截图有时候能勾起些回忆

今天周末,我把我的移动硬盘带到公司来打算整理下我的文件。无意间当整理我的图片目录的时候发现「尘封」已久的一些系统截图。

这些可以说都是我使用计算机的见证。由于截图众多,我精选了其中的几张有趣的,和大家分享一下。

https://friable.rocks/_/2007_11_10/1194688388.gif

首先是控制台。谁说 Linux 的控制台是黑底白字非常死板的?有了 Bootsplash ,在控制台上可以任意的加上彩色的背景。

https://friable.rocks/_/2007_11_10/1194688347.gif

看来上面的这张图相信大家知道我为什么取名叫 feelinglucky -「手气不错」了吧。是的,当时我运气不错,因为我的老机(MMX 166)由于硬件老旧,所以内核一下子就找到了。我记得当时同寝室的哥们被我气得半死,呵呵。

https://friable.rocks/_/2007_11_10/1194688414.gif

Linux 下我还是喜欢使用 VIM 编写程序,这已经成为我的信仰了(请允许我这样说)。可能你会看见控制台的字体非常奇怪。在 Slackware Linux 下,编辑 /etc/rc.d/rc.fonts 就可以在 Framebuffer 控制台下显示自己想要的字体了。

https://friable.rocks/_/2007_11_10/1194688426.gif

对于中文的支持内核级别的当然是使用 UNICON 了,这个是 TurboLinux 的一个项目。已经很久没有关注这个项目来,自工作了以后我发现我很少「折腾」 Linux 了。我还依稀的记得为了同时打上 UNICON 和 Bootsplash 补丁我 Hack 了不少的时间(当时的 Linux 版本号我记得是 2.4.22)。

https://friable.rocks/_/2007_11_10/1194688442.gif

相信大家还是喜欢 GUI 界面吧,上面这张是 Fvwm 窗口管理器 的截图。我开了一个 xclock 用来显示当前时间,还有一个系统监视工具(名字我一时给忘记了)。界面虽然简单,但是我绑定了很多的快捷键,所以非常好用。

https://friable.rocks/_/2007_11_10/1194688459.gif

工作和娱乐是两不误的。 XMMS 可以说就是我 Linux 下的 Winamp。至于 VIM,它走到哪里都可以用,哪怕是在火星。这图中还有一个叫 MRXVT 的控制台终端,看得出它的亮点就是多标签页吧。

https://friable.rocks/_/2007_11_10/1194688476.gif

除了 FVWM 以外,我偶尔也会使用一下 WindowMaker ,不过这仅仅是换换胃口。截图上显示除了该死的 VIM 外还有几个 DockApp ,开启了一个终端用 MUTT 收信。还有一个 GIMP ,不过版本比较老了,这个是 GTK+ 版本的(起码是两年前的了)。

https://friable.rocks/_/2007_11_10/1194688494.gif

*ix 下可以用 Wine 模拟 Windows 应用程序,也可以用 VMWare 模拟一个虚拟机装一个 Windows 系统。上面的这张就比较有意思了,我是用了一个 DOSBox 模拟 TurboC 2.0 (相信学 C 语言的同学都不陌生)。

https://friable.rocks/_/2007_11_10/1194688508.jpg

生命有时候就在于「折腾」。我很庆幸大学四年的时光能学到很多的东西,在这里我要感谢那台早已淘汰的 MMX 166 笔记本。详细信息兄弟们可以 到这里看看

我的照片

嗨!我叫「明城」,八零后、码农、宁波佬,现居杭州。除了这里,同时也欢迎您关注我的 GitHubTwitterInstagram 等。

这个 Blog 原先的名字叫 Gracecode.com 、现在叫 「無標題文檔」 。 要知道作为码农取名是件很难的事情,所以不想在取名这事情上太费心思。

作为八零后,自认为还仅存点点可能不怎么被理解的幽默感,以及对平淡生活的追求和向往。 为了避免不必要的麻烦,声明本站所输出的内容以及观点仅代表个人,不代表自己所服务公司或组织的任何立场。

如果您想联系我,可以发我邮件 `echo bWluZ2NoZW5nQG91dGxvb2suY29tCg== | base64 -d`

分类

搜索

文章