XPressMEのタイムゾーンの設定 anchor.png

Page Top

不具合の状況 anchor.png

XPressMEのRSSと新着情報モジュールのRSSでXPressMEの記事のタイムスタンプが、なぜか一致しないのです。
さらに、XPressMEでは最新の記事もRSSに含まれるのですが、新着情報モジュールのRSSでは含まれていない。
現在の設定は以下のとおり。

XOOPSの全般設定、サーバのタイムゾーン:GMT
同上    デフォルトのタイムゾーン:GMT+0900

ユーザ(自分)のタイムゾーン:GMT+0900

XPressMEのタイムゾーン:UTC+9

この状態で、XPressMEのRSSでの記事のタイムスタンプは正常だが、新着情報モジュールのRSSでは16時間も進んでしまっている。

Page Top

対応策の検討 anchor.png

WordPressの記事のタイムスタンプは以下のデータベース項目らしい。

include/date.ini.php が新着情報モジュール用のプラグインなので、中身を見てみる。関係がありそうな箇所は次のところかな。

  • function _xpress_new($mydirname, $limit=0, $offset=0)
    	$sql1 = "SELECT ID, post_author, post_title, post_content, post_type, comment_count, UNIX_TIMESTAMP(post_date) AS unix_post_date, UNIX_TIMESTAMP(post_modified) AS unix_post_modified, post_status FROM ".$table_posts." WHERE (post_status='publish') AND (UNIX_TIMESTAMP(post_date) <= UNIX_TIMESTAMP()) ORDER BY post_date DESC";
  • function _xpress_data($mydirname,$limit=0, $offset=0)
    	$sql = "SELECT ID, post_title, UNIX_TIMESTAMP(post_date) AS unix_post_date, post_status FROM ".$xoopsDB->prefix($wp_prefix . "_posts")." WHERE post_status='publish' ORDER BY ID";
    	$result = $xoopsDB->query($sql,$limit,$offset);

上記のpost_dateをpost_date_gmtとしてみると、当然ながら、9時間変化したが、まだ7時間進んでいる。なぜ???

これは、.htaccessで設定している、phpのタイムゾーンがずれてるのかも?

sshでサーバにアクセスして、timeコマンドで現在時刻を表示させてみると、MSTで表示された。つまり、サーバ自体はGMT-7。これで計算が合うのかな。

ということで、.htaccessでタイムゾーンを以下のように設定。

php_value date.timezone MST

でも、XOOPSの全般設定、サーバのタイムゾーンを

GMT-7

にすると、だめ。

GMT

とした。

この状態だと、XPressMEのRSSも新着情報モジュールのRSSもXPressMEの記事のタイムスタンプは正常になった。ただし、新着情報モジュールのキャッシュの生成時刻がおかしくなり、xpWikiもおかしい。

Page Top

結局 anchor.png

data.ini.phpは元に戻し、XOOPSの全体設定、サーバのタイムゾーンはGMT+9、として様子を見てみる。

うーむ。

やっぱり、基本に戻ろう。

  • data.ini.phpは元どおり
  • XOOPSの全体設定、サーバのタイムゾーンはGMT-7
  • 同上 デフォルトのタイムゾーンはGMT+9
  • .htaccessのタイムゾーンはGMT-7

これだと、新着情報モジュールのXPressMEの記事のタイムスタンプがやはりおかしい。

Page Top

ちょっとテスト anchor.png

xpWikiの新着情報モジュールプラグインをいじってみる。

			$localtime = $time + ($this->cont['ZONETIME']);

だめ。元に戻す。

Page Top

以下は参考(今回はあまり関係がなさそう) anchor.png

  • WordPressでRSSの時間ずれを修正|ザピースカ

    いろいろ調べた結果、wp-rss2.php(RSS2.0の出力プログラム。デフォルトだとこれが選択されるらしい。rss1とかatomを使っていれば該当のところを直す必要あり)の日付を取っている下記のコードを修正すれば良いことが分かった。


    mysql2date('D, d M Y H:i:s O', get_lastpostmodified('GMT'), false)


    この日付書式のオプションはphpのdate関数と同じで、最後の「O」(ゼロではなくオー)はグリニッジ標準時との時差である。つまり、日本でサーバーを運用していれば問題ないのだが、海外だとその時差分上積みされてしまうらしいのだ。ここを「D, d M Y H:i:s +0900」と明示的に書いてやることで解決しました(参考記事)。コード内に2箇所あるので両方直すこと。


Front page   Freeze Diff Backup Copy Rename ReloadPrint View   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom) Powered by xpWiki
Counter: 884, today: 1, yesterday: 0
Princeps date: 2009-01-01 (Thu) 23:23:20
Last-modified: 2009-01-01 (Thu) 23:23:20 (JST) (613d) by gokuraku
メインメニュー
ログイン
ユーザ名:

パスワード:



パスワード紛失

新規登録




WEBサイトランキング
Brasilian | English | French | German | Greek | Japanese | Korean | Russian | T-Chinese top
Powered by XOOPS Cube 2.2 © 2001-2010 XOOPS Cube Project