簡體   English   中英

php date_default_timezone_set time() VS mysql now()

[英]php date_default_timezone_set time() VS mysql now()

我正在開發在線購物系統。 只有英國客戶可以從該網站下訂單。

我想知道哪種方法最適合我?

date_default_timezone_set("歐洲/倫敦"); $時間=時間();

或者

現在使用 mysql function()?

有時客戶可以 select 一次交貨或收集。

注意:在英國,我們每年更改兩次時間!

如果將時間發送到數據庫,請使用 NOW(); 更少的開銷,並且服務器時區希望總是正確且比 PHP 的時區更不易變。 如果我們只是在談論顯示,而沒有實際進行數據庫工作,那么僅僅為了獲取時間而運行 mysql 查詢就太過分了。

在 PHP 我通常執行以下操作:

date_default_timezone_set('GMT');

然后,在連接到 MySQL 服務器后,我執行以下查詢:

'SET time_zone = "' . date_default_timezone_get() . '";'

這可以確保 PHP 和 MySQL 使用相同的時區,因此NOW()date('Ymd H:i:s')都應該產生相同的結果。

關於日光變化,它們應該不是問題(如果您保持軟件更新)。

這個問題的一個重要考慮因素是 PHP 和 MySQL 之間的時間是否相同?

如果兩者在同一台機器上運行,那么答案很可能是“是”,但如果它們在不同的機器上,那么它們很可能實際上是不同的。

考慮使用 MySQL NOW() function 將日期寫入數據庫的場景,另外您有一個查詢,要求在過去 24 小時內創建的所有條目,使用 Z2FEC3923284A5C23AC138DA2 在查詢中構建時間。 如果 PHP 服務器上的時間與 SQL 服務器上的時間不同步,則可能會錯過報告中的記錄(或連續幾天將它們加倍,具體取決於它們不同步的方式) . 這可能導致錯過交付等。

這樣做的結果是,您應該注意與您對日期(尤其是日期時間)的使用保持一致。 使用 PHP 還是 MySQL 日期功能並不重要,但您應該嘗試使用與更新時相同的平台進行查詢。

當然,這種方式並不總是很關鍵,您可以務實地對待它 - 有時將 go 回 DB 太不方便了,只是為了找出時間是什么,但什么時候很重要。 你應該小心。

當然,如果兩個系統在同一台服務器上,這不是問題,但您不應該假設情況總是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM