質問 > その他 > 海外サーバーのタイムゾーン対応のカスタマイズについて |
その他
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
tanakam |
投稿日時: 2011/4/15 0:07
対応状況: −−−
|
新米 登録日: 2010/7/14 居住地: 東京都 投稿: 8 |
海外サーバーのタイムゾーン対応のカスタマイズについて お世話になります。
海外サーバーを使用しているのですが、DBに書き込まれる日付が海外の時間で登録されてしまします。USA時差14時間。 できれば、日本時間でDBに登録したいと考えているのですが、ネットで調べたら過去のEC-CUBEバージョンで対応する記載がありました。 【以下、カスタマイズ方法】※ネットから引用させていただきました。 --------------------------------------------------------- タイムゾーンの修正:海外サーバーを使う場合の時差をなくす方法【EC-CUBEカスタマイズ】 1.php.iniに、タイムゾーンを書きます。 2./data/class/SC_DbConn.phpの 「$this->conn = $objDbConn;」の1行後ろに、 「$this->conn->query(“SET time_zone = ‘Asia/Tokyo’”);」を追加。 これで、DBに格納される受注日などは日本のタイムゾーンで登録されます。 --------------------------------------------------------- 上の1.php.iniのタイムゾーンは追加しましたが、2.のEC-CUBE 2.11.0 バージョンでは、 「/data/class/SC_DbConn.php」のファイルが無くなっていますので、同じような対応を行うには、どのようにしたら良いのか分からずいます。 EC-CUBEの新バージョン(2.11.0)でのカスタマイズを方法をご存じでしたら教えていただけると助かります、 よろしくお願い致します。 <システム環境> ------------------------------------------------------------ [EC-CUBE] 2.11.0 [レンタルサーバ] Host Gator(海外レンタルサーバー) [OS] Linux 2.6.34.6 [PHP] PHP 5.2.15 [データベース] MySQL 5.1.52 UTF-8 Unicode 設定 [WEBサーバ] apache 2.2.15 ------------------------------------------------------------ |
AMUAMU |
投稿日時: 2011/4/15 0:50
対応状況: −−−
|
神 登録日: 2009/5/2 居住地: 東京都 投稿: 2712 |
Re: 海外サーバーのタイムゾーン対応のカスタマイズについて SC_Queryの冒頭のほうでsetCharsetなどをしている並びで実行する感じになるかと思います。
DBライブラリ的にはsetOptionとか使う方が良いのかもしれませんが・・・恐らくqueryでも事は足りるかと思います。
|
tanakam |
投稿日時: 2011/4/15 13:37
対応状況: −−−
|
新米 登録日: 2010/7/14 居住地: 東京都 投稿: 8 |
Re: 海外サーバーのタイムゾーン対応のカスタマイズについて AMUAMUさん
早々のアドバイス有り難うございます。 早速、教えて頂いたSC_Query.phpファイルへカスタマイズを試みて 見ましたが、結果は日付・時間とも反映されませんでした。 教えて頂きました場所は、おそらく以下の所だと追加してみました。 78行目から記載(元の状態)------------------------------------ if (!PEAR::isError($this->conn)) { $this->conn->setCharset(CHAR_CODE); $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); } --------------------------------------------------------------- 【対応試み1】 if (!PEAR::isError($this->conn)) { $this->conn->setCharset(CHAR_CODE); $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); $this->conn->query("SET time_zone = 'Asia/Tokyo'"); } --------------------------------------------------------------- 【対応試み2】 if (!PEAR::isError($this->conn)) { $this->conn->setCharset(CHAR_CODE); $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); $this->conn->setOption("SET time_zone = 'Asia/Tokyo'"); } ※setOptionの記述は、これで良いのでしょうか? --------------------------------------------------------------- 一様、ifの条件で処理が実行されているのは、確認しています。 他にアドバイスがございましたら、お願い致します。 よろしくお願いします。 |
Fortitude |
投稿日時: 2011/5/20 13:43
対応状況: −−−
|
新米 登録日: 2011/5/5 居住地: 投稿: 5 |
Re: 海外サーバーのタイムゾーン対応のカスタマイズについて すでに解決済みでしたらいいのですが、私も同じような状況で、海外サーバー使用で受注日などに時差が出てましたので、解決できた方法を記載しておきたいと思います。
EC-CUBE 2.11です。 /data/class/SC_Query.php 内の73行目以下 3か所に $this->conn->query("SET TIME ZONE '+9'"); を追加したら、受注日などが修正されました。 ("")内の構文につきましては、私はPostgreSQLを使っておりますので、MySQLならばMySQL用の構文に書き直して下さい。(+9も、時差時間数ですがPostgreの記載方法ではないかと思いますので…) ------------------------------------------------------------------- if ($new) { $this->conn = MDB2::connect($dsn, $options); $this->conn->query("SET TIME ZONE '+9'"); } else { $this->conn = MDB2::singleton($dsn, $options); $this->conn->query("SET TIME ZONE '+9'"); } if (!PEAR::isError($this->conn)) { $this->conn->query("SET TIME ZONE '+9'"); $this->conn->setCharset("utf8"); $this->conn->setFetchMode(MDB2_FETCHMODE_ASSOC); ------------------------------------------------------------------- ただ、私はデータベースなどあまり詳しくありませんので、もしこの内容を詳しい方が見られて、記述したことにより弊害が起こる可能性があるのでは?と思われたならばご指摘いただければ幸いです。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |