2011年03月25日

i18n国際化表示がうまくいかない?(Locale/mo file??)

とりあえず現状報告です。

--------------
PHP 5.2.5
Zend Optimizer
CakePHP 1.3.8
--------------

現在、Cakeのlocakeディレクトリ内に jpnディレクトリを作成し、POEditで作成した poファイルとmoファイルを入れてあります。と、なぜかあるサーバに限って日本語表示がうまくいかず、英語になってしまいました。

・service httpd restart などとすると、一瞬日本語が表示される。
・他のサーバではまったく問題が発生していない
・別ディレクトリに同じソースをコピーしても、そちらでもうまく表示されない
・cacheなどの設定はすべて試したがそれでは解消されなかった。
・Zend Optimizerを入れていたのでそれも疑っていた。

結局、「default.moファイルのファイル名を変更して、default.poだけを使用するようにしたところ、正しく日本語表示されるようになった」という結果になりました。

まだソースを追っていないので詳細は不明です。
あと、/tmp/cache/persistent 内にできているファイルサイズがやたらと巨大になり、中を見てみると、同じデータがなども繰り返して入っているようでした。

みなさんは経験ありますか〜〜?
ちなみに、POEditが悪いのかと思い、msgfmtで.moファイルを作り直してもみたのですが、やはり同じ内容に・・・・。

まだよく分かりません。

posted by SDozono at 17:33| 東京 ☀| Comment(0) | TrackBack(0) | Japanese Translation | このブログの読者になる | 更新情報をチェックする

2011年03月08日

DEBUG=0なのにDESCRIBEが頻発する

うひゃ〜久しぶりの更新だ。

今回、依頼されて調査したのは、「DEBUG=0に設定しているのに毎回DESCRIBEが発行されており、パフォーマンスに影響している」というものでした。

そんなこと起こるのかなぁと思ったら本当に発生していました。
まず最初に調べたのは、内部のコードで、DEBUGの値を変えていないか、というチェック。
Grepで一気に調べましたが、ありませんでした。

うーん、なんでだろう、と/app/tmp/cache/models を調べたところ、ファイルが生成されていないことが判明。
CakePHPは、テーブル構造の情報を DEBUG>0にしていると毎回チェックしますが、DEBUG=0にすると、「テーブル情報を/app/tmp/cache/models/内に書き込み、そのキャッシュを利用して速度を上げる」仕組みになっています。

つまり、キャッシュが生成されていないので毎回DESCRIBEが発行されていると判明。

ファイル権限をいろいろ調べましたが、そもそも/app/tmp/logs内のファイルなどは出力されています。
さらに調べたところ、core.php内の、

//Configure::write('Cache.disable', true);

がアンコメントされていることに気が付きました。
標準通りコメントアウトしたところ、無事に動作が戻りました。
posted by SDozono at 16:25| 東京 ☁| Comment(0) | TrackBack(0) | CakePHP General | このブログの読者になる | 更新情報をチェックする