timezoneを設定する
2010/05/09 | PHPで遭遇した問題とその解決
故あって久々に海外サーバを使うことになった。海外サーバは安価で大容量という点がいいのだが、さしあたって2点問題がある。
まず一つ目は速度が期待できないこと。こればかりはどうしようもない。サーバ側でのプログラムの処理速度は問題ないが、距離が遠い分表示に時間がかかる。試してみたら、HTMLのみなら容量もそれほど大きいわけではないのでそれほどでもないが、画像等のバイナリを扱うと遅さがわかってしまう。しかし、こればかりはどうしようもない。画像そのもののサイズを小さくするしかない。
もう一つ。時刻の設定が問題。海外設置のサーバでは、専用サーバやVPSでもない限り現地時刻で設定してあるので、単純に現在日時を表示しようとすると、現地時間で表示されてしまう。かといって時差を考慮して足し算引き算をするのはもっとダメ。サマータイムとか考慮することを考えるととても複雑だし、汎用化するために関数化するのはプログラムの本質から離れてしまうような気がするのでNG。
でも実は簡単だった。プログラム自体は何も考慮せず作り、プログラムの先頭におまじないをつければよい。
putenv(‘TZ=JST-9′);
この1行を書いておくだけで、プログラムは日本時間で処理してくれる。環境変数のことを考慮するようなことってあまりないが、Tipsとして知っておくと便利な機能だ。