date_default_timezone_set() でタイムゾーンを指定できることが分かったので、 strftime(), gmstrftime() にタイムゾーンを反映させた。
それにともなって、スキンの Date タグのオプションとして、 timezone を追加した。サーバに設定されているタイムゾーンのまま変更が不要の場合は、このオプションを指定しなければよい。
pubDate の出力の場合は、
<pubDate><%=$Date fmt="%a, %e %b %Y %H:%M:%S %Z" locale="en_US.UTF-8" timezone="GMT"%></pubDate>
のように指定することで GMT で日時を出力することができるようになった。
これで一応は、 RSS2.0 の記事の公開日時( pubDate )では GMT で出力するようにしながら、各スキンでの処理ができるようになった。
ただ一つ気になるのは、date_default_timezone_set() の結果がプロセス全体に反映されるため、 PHP に同時に多数のアクセスがあった場合に、もし各アクセスがスレッド単位で処理されるとしたら、この関数によるタイムゾーンの変更が、別のスレッドで動作中の処理に予期しない影響を与えることになるのだが、大丈夫なのかな?
この記事のリンク用URL&トラックバックURL : https://red-souls.jp/ichounoki/rnote/works/software/20190820_002605657213.htm