最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

有關(guān) PHP 和 MySQL 時(shí)區(qū)的一點(diǎn)總結(jié)

 更新時(shí)間:2008年03月26日 22:08:31   作者:  
由于暫時(shí)使用國(guó)外的空間,在我發(fā)布 Blog 的時(shí)候發(fā)現(xiàn)時(shí)間總是不對(duì)。依據(jù)我以前編寫程序的經(jīng)驗(yàn),這是時(shí)區(qū)的問(wèn)題。這個(gè)問(wèn)題解決起來(lái)并不難,寫下我的解決途徑以便日后參考。
PHP 腳本端的市區(qū)設(shè)置可以在 php.ini 下設(shè)置 date.timezone 鍵的值為 'Asia/Shanghai' 即可。但是通常共享虛擬主機(jī)本身沒(méi)有修改 php.ini 權(quán)限。這個(gè)時(shí)候就應(yīng)該在程序公共部分加入

ini_set('date.timezone','Asia/Shanghai');動(dòng)態(tài)修改 php.ini 的設(shè)置。之后可以測(cè)試一下時(shí)間是否正確:

var_dump(date());如果服務(wù)器的本地時(shí)間是正確的,那么一般就能解決問(wèn)題了。附,PHP 5.1 以上提供了專門的函數(shù)修改對(duì)應(yīng)的時(shí)區(qū):

date_default_timezone_set('Asia/Shanghai');建議使用此函數(shù),因?yàn)楦ㄓ靡恍?。?duì)應(yīng) 'Asia/Shanghai' 其他可以使用的大陸時(shí)區(qū)還有:Asia/Chongqing 、Asia/Shanghai 、Asia/Urumqi (依次為重慶,上海,烏魯木齊);港臺(tái)地區(qū)可用:Asia/Macao、Asia/Hong_Kong、Asia/Taipei(依次為澳門,香港,臺(tái)北);還有新加坡:Asia/Singapore;其他可用的值是:Etc/GMT-8、Singapore、Hongkong、PRC;老外好像把北京漏調(diào)了。

但是,在我修改成功 PHP 端的時(shí)區(qū)以后發(fā)現(xiàn)日期并沒(méi)有正確的記錄下來(lái)。這個(gè)時(shí)候我考慮是否是數(shù)據(jù)庫(kù)的問(wèn)題。果不其然,因?yàn)槌绦虿迦氲暮瘮?shù)并沒(méi)有調(diào)用 PHP 的時(shí)間,而是直接使用 MySQL 的 CURRECT_TIMESTAMP。這個(gè)時(shí)候就要考慮是否能修改 MySQL 方面的時(shí)區(qū)。

參考了 MySQL 的文檔,發(fā)現(xiàn)一個(gè)可行的 SQL 語(yǔ)句為:

SET GLOBAL time_zone = '+8:00'; 其中 '+8:00' 是東八區(qū)的表示方法,其他的市區(qū)依次類推。而我在數(shù)據(jù)庫(kù)模型中插入改語(yǔ)句發(fā)現(xiàn)權(quán)限不夠(該死的虛擬主機(jī)提供商)。接下來(lái)我調(diào)試了很多語(yǔ)句,比如:

DATE_ADD(UTC_TIMESTAMP(), INTERVAL 8 HOUR);顯示時(shí)區(qū)的 SQL 語(yǔ)句:

SHOW VARIABLES LIKE 'system_time_zone'等等。而由于 MySQL 權(quán)限的限制并沒(méi)有徹底的解決方案。我 Google 了下,發(fā)現(xiàn)老外這個(gè)有一個(gè)非常好的解決方案。但是他需要修改每條插入數(shù)據(jù)的 SQL 語(yǔ)句。這樣的方案并不是非常的有效,一旦數(shù)據(jù)庫(kù)時(shí)區(qū)改成正常,那么相應(yīng)的 SQL 語(yǔ)句又要改回來(lái)。

而我考慮既然 PHP 端已經(jīng)可以正確的解決時(shí)間的問(wèn)題了。MySQL 數(shù)據(jù)庫(kù)方面雖然可以使用相應(yīng)的函數(shù)解決,但是如果日后遷移到別的主機(jī)環(huán)境又要改回來(lái)。而相應(yīng)的字段是一個(gè) TIMESTAMP 類型的,默認(rèn)的值為 CURRECT_TIMESTAMP,當(dāng)然是可以指定時(shí)間的。

那么我的做法就是讓 PHP 插入當(dāng)前正確的時(shí)間,這樣雖然程序方面需要做相應(yīng)的修改。不過(guò)日后配置修改起來(lái)只要修改一處就可以了。最后插入數(shù)據(jù)庫(kù)的時(shí)間注意一下格式:

date('Y-m-d H:i:s')這樣就可以解決問(wèn)題了。附,一些非常好的參考資料:

http://www.modwest.com/help/kb6-256.html 
http://topic.csdn.net/t/20060503/07/4728521.html 
http://www.phpchina.com/5173/viewspace_5132.html 
http://www.phpx.com/pth110355.php 
更新:由此 wiLdGoose 兄說(shuō)他也碰到同樣的問(wèn)題,但是無(wú)法解決。結(jié)果經(jīng)過(guò)種種的假設(shè)和判斷以后,到最后發(fā)現(xiàn)原來(lái)是 Zend Studio 的時(shí)區(qū)配置問(wèn)題(我狂汗ing)??磥?lái)除去運(yùn)行環(huán)境,開發(fā)環(huán)境也是需要注意以下的。
今天我也遇到這個(gè)問(wèn)題了,我比你幸運(yùn),自己的主機(jī),可以:
SET GLOBAL time_zone = '+8:00'; 
呵呵,你可惜了,不能用 UNIX_TIMESTAMP() 這樣的函數(shù)了.

相關(guān)文章

最新評(píng)論

宜章县| 拜城县| 玉林市| 长岭县| 鹿邑县| 灵璧县| 西平县| 惠州市| 晋宁县| 新晃| 文昌市| 海伦市| 普宁市| 芒康县| 和平区| 搜索| 荔波县| 托里县| 嘉义县| 亳州市| 北票市| 泽州县| 正蓝旗| 安新县| 鞍山市| 普洱| 安塞县| 邢台市| 恭城| 永平县| 莫力| 邳州市| 和静县| 饶平县| 新安县| 晋城| 吴堡县| 昭平县| 邵阳县| 镇赉县| 勐海县|