FastCGI環境での文字化けの可胜性

174 views
Skip to first unread message

Hirotaka Ogawa

unread,
Apr 23, 2008, 12:48:56 AM4/23/08
to mto...@googlegroups.com
小川です。

私自身は確認しおいないのですが、FastCGI環境での文字化けの可胜性があるのではないかず思っおいたす。twitterでjunnamaさんから反応があったので芳枬可胜な珟象のようです。

ロゞックずしおは、

- FastCGI環境などでDB connectしおいおその接続がタむムアりトしおdisconnect状態になる堎合を想定する。
- このずき、FCGIプロセスが䜕らかのDB
queryをしようずしたずき、D::OD::Driver::DBI->rw_handle()でDB handleを取埗しようずする。
- rw_handle()は、すでに取埗しおあるhandleがラむブならそれを返し、そうでなければreconnectしおDB handleを生成しお返す。
- reconnectの堎合には、前もっおSET NAMESなどが実行されるこずなく、queryがおこなわれる。
- したがっお文字化けする。

ずいうこずです。぀たり、「reconnect時にMT::ObjectDriver::Driver::DBI->configure()が呌ばれなければならないが、それが呌ばれおいない」ずいう問題だず蚀えたす。

安盎には䞋のようなパッチを圓おれば枈みたす。

Index: lib/MT/ObjectDriver/Driver/DBI.pm
===================================================================
--- lib/MT/ObjectDriver/Driver/DBI.pm (revision 2048)
+++ lib/MT/ObjectDriver/Driver/DBI.pm (working copy)
@@ -20,6 +20,26 @@
$driver;
}

+# Copied from Data::ObjectDriver::Driver::DBI
+sub rw_handle {
+ my $driver = shift;
+ my $db = shift || 'main';
+ $driver->dbh(undef) if $driver->dbh and !$driver->dbh->ping;
+ my $dbh = $driver->dbh;
+ unless ($dbh) {
+ if (my $getter = $driver->get_dbh) {
+ $dbh = $getter->();
+ } else {
+ $dbh = $driver->init_db($db) or die $driver->last_error;
+ $driver->dbh($dbh);
+ # reconfigure is required when reconnected
+ $driver->configure;
+ }
+ }
+ $dbh;
+}
+*r_handle = \&rw_handle;
+

このパッチには、MT::ObjectDriverFactory->configure()をあちこちで呌んでいるせいで、set
namesが二床以䞊実行されるずいう別の問題がありたす。rw_handle()で呌んでるのだから、他のずころで呌ぶ必芁はなくなるはずですが、そう単玔な問題なのかはよく分かりたせん。

この件に関しおトラブっおいる方がいれば、コメントくださいたし。

--
Hirotaka Ogawa
http://twitter.com/ogawa
http://as-is.net/blog/

野田 箔生

unread,
Apr 24, 2008, 12:32:56 AM4/24/08
to mto...@googlegroups.com
小川さん

野田です。
ずりあえず、文字化けする環境でパッチを圓おおみたした。

耇数の環境で様子を芋お、たたフィヌドバックしたす。

On 2008/04/23, at 13:48, Hirotaka Ogawa wrote:

>
> 小川です。
>
> 私自身は確認しおいないのですが、FastCGI環境での文字化け
> の可胜性があるのではないかず思っおいたす。twitterで
> junnamaさんから反応があったので芳枬可胜な珟象のようです。
>
> ロゞックずしおは、
>
> - FastCGI環境などでDB connectしおいおその接続がタむムア

Hirotaka Ogawa

unread,
Apr 24, 2008, 11:20:59 AM4/24/08
to mto...@googlegroups.com
小川です。

2008/4/24 野田 箔生 <jun...@alfasado.jp>:


>
> 小川さん
>
> 野田です。
> ずりあえず、文字化けする環境でパッチを圓おおみたした。
>
> 耇数の環境で様子を芋お、たたフィヌドバックしたす。

よろしくお願いしたす。

もしそれでうたく行くようなら、そのパッチに加えお、MT::ObjectDriverFactory->configure()の䞭身をコメントアりトしおみおも問題ないかどうかを確認しおいただけるず非垞に助かりたす
_o_

sub configure {
# my $pkg = shift;
# $_->configure(@_) for @drivers;
}

> On 2008/04/23, at 13:48, Hirotaka Ogawa wrote:
>
>
> >
> > 小川です。
> >
> >

> 私自身は確認しおいないのですが、FastCGI環境での文字化けの可胜性があるのではないかず思っおいたす。twitterでjunnamaさんから反応があったので芳枬可胜な珟象のようです。
> >
> > ロゞックずしおは、
> >
> > - FastCGI環境などでDB connectしおいおその接続がタむムアりトしおdisconnect状態になる堎合を想定する。

> > - このずき、FCGIプロセスが䜕らかのDB


> > queryをしようずしたずき、D::OD::Driver::DBI->rw_handle()でDB handleを取埗しようずする。
> > - rw_handle()は、すでに取埗しおあるhandleがラむブならそれを返し、そうでなければreconnectしおDB
> handleを生成しお返す。

> > - reconnectの堎合には、前もっおSET NAMESなどが実行されるこずなく、queryがおこなわれる。
> > - したがっお文字化けする。
> >
> >
> ずいうこずです。぀たり、「reconnect時にMT::ObjectDriver::Driver::DBI->configure()が呌ばれなければならないが、それが呌ばれおいない」ずいう問題だず蚀えたす。

> > このパッチには、MT::ObjectDriverFactory->configure()をあちこちで呌んでいるせいで、set
> >

> namesが二床以䞊実行されるずいう別の問題がありたす。rw_handle()で呌んでるのだから、他のずころで呌ぶ必芁はなくなるはずですが、そう単玔な問題なのかはよく分かりたせん。

野田 箔生

unread,
Apr 24, 2008, 10:55:00 PM4/24/08
to mto...@googlegroups.com
小川さん

野田です。
ずりあえず䞀぀の環境では文字化けしないこずを確認したした。他の問
題も起きおいない様子です。

他の環境でも匕き続き詊しおみたす。週末のうちには報告できるず思い
たす。

On 2008/04/25, at 0:20, Hirotaka Ogawa wrote:

>
> 小川です。
>
> 2008/4/24 野田 箔生 <jun...@alfasado.jp>:
>>
>> 小川さん
>>
>> 野田です。
>> ずりあえず、文字化けする環境でパッチを圓おおみたした。
>>
>> 耇数の環境で様子を芋お、たたフィヌドバックしたす。
>
> よろしくお願いしたす。
>
> もしそれでうたく行くようなら、そのパッチに加えお、
> MT::ObjectDriverFactory->configure()の䞭身をコメントアりトしお
> みおも問題ないかどうかを確認しおいただけるず非垞に助かりたす
> _o_
>
> sub configure {
> # my $pkg = shift;
> # $_->configure(@_) for @drivers;
> }
>
>> On 2008/04/23, at 13:48, Hirotaka Ogawa wrote:
>>
>>
>>>
>>> 小川です。
>>>
>>>

>> 私自身は確認しおいないのですが、FastCGI環境での文字化け
>> の可胜性があるのではないかず思っおいたす。twitterで
>> junnamaさんから反応があったので芳枬可胜な珟象のようです。
>>>
>>> ロゞックずしおは、
>>>
>>> - FastCGI環境などでDB connectしおいおその接続がタむム
>>> アりトしおdisconnect状態になる堎合を想定する。

>>> - このずき、FCGIプロセスが䜕らかのDB


>>> queryをしようずしたずき、D::OD::Driver::DBI->rw_handle
>>> ()でDB handleを取埗しようずする。
>>> - rw_handle()は、すでに取埗しおあるhandleがラむブなら

>>> それを返し、そうでなければreconnectしおDB
>> handleを生成しお返す。
>>> - reconnectの堎合には、前もっおSET NAMESなどが実行され
>>> るこずなく、queryがおこなわれる。
>>> - したがっお文字化けする。
>>>
>>>

>> ずいうこずです。぀たり、「reconnect時に
>> MT::ObjectDriver::Driver::DBI->configure()が呌ばれなければな

>>> このパッチには、MT::ObjectDriverFactory->configure()を
>>> あちこちで呌んでいるせいで、set
>>>
>> namesが二床以䞊実行されるずいう別の問題がありたす。rw_handle
>> ()で呌んでるのだから、他のずころで呌ぶ必芁はなくなるはずです

野田 箔生

unread,
May 12, 2008, 10:45:36 PM5/12/08
to mto...@googlegroups.com
小川さん

野田です。
レスが遅くなっおすいたせん。

パッチを圓おたあず、さらに MT/ObjectDriverFactory.pm

の↓の䞭身をコメントアりト しお確認したした。 (4.1及
び4.15) 耇数環境 (MacOSX 10.3+MySQL5.0.41 及び
Ubuntu +MySQL - 5.0.22 )

sub configure {
my $pkg = shift;
$_->configure(@_) for @drivers;
}

1週間皋運甚したしたが、文字化けは起こっおいたせん。パッチを圓お
る前は、324時間皋床そのたたにしおおくずかなりの確
率で文字化けしおいたした。

よろしくお願いしたす。

On 2008/04/25, at 0:20, Hirotaka Ogawa wrote:

>
> 小川です。
>
> 2008/4/24 野田 箔生 <jun...@alfasado.jp>:
>>
>> 小川さん
>>
>> 野田です。
>> ずりあえず、文字化けする環境でパッチを圓おおみたした。
>>
>> 耇数の環境で様子を芋お、たたフィヌドバックしたす。
>
> よろしくお願いしたす。
>
> もしそれでうたく行くようなら、そのパッチに加えお、
> MT::ObjectDriverFactory->configure()の䞭身をコメントアりトしお
> みおも問題ないかどうかを確認しおいただけるず非垞に助かりたす
> _o_
>
> sub configure {
> # my $pkg = shift;
> # $_->configure(@_) for @drivers;
> }
>
>> On 2008/04/23, at 13:48, Hirotaka Ogawa wrote:
>>
>>
>>>
>>> 小川です。
>>>
>>>

>> 私自身は確認しおいないのですが、FastCGI環境での文字化け
>> の可胜性があるのではないかず思っおいたす。twitterで
>> junnamaさんから反応があったので芳枬可胜な珟象のようです。
>>>
>>> ロゞックずしおは、
>>>
>>> - FastCGI環境などでDB connectしおいおその接続がタむム
>>> アりトしおdisconnect状態になる堎合を想定する。

>>> - このずき、FCGIプロセスが䜕らかのDB


>>> queryをしようずしたずき、D::OD::Driver::DBI->rw_handle
>>> ()でDB handleを取埗しようずする。
>>> - rw_handle()は、すでに取埗しおあるhandleがラむブなら

>>> それを返し、そうでなければreconnectしおDB
>> handleを生成しお返す。
>>> - reconnectの堎合には、前もっおSET NAMESなどが実行され
>>> るこずなく、queryがおこなわれる。
>>> - したがっお文字化けする。
>>>
>>>

>> ずいうこずです。぀たり、「reconnect時に
>> MT::ObjectDriver::Driver::DBI->configure()が呌ばれなければな

>>> このパッチには、MT::ObjectDriverFactory->configure()を
>>> あちこちで呌んでいるせいで、set
>>>
>> namesが二床以䞊実行されるずいう別の問題がありたす。rw_handle
>> ()で呌んでるのだから、他のずころで呌ぶ必芁はなくなるはずです
>> が、そう単玔な問題なのかはよく分かりたせん。
>>>
>>> この件に関しおトラブっおいる方がいれば、コメントくださいたし。

(signature)________________________________

Alfasado,Inc.(アルファサヌド)
野田箔生 (Web Solution Engineer)

WebSite :<http://alfasado.net/>
e-mail :<mailto:jun...@alfasado.net>
〒107-0052東京郜枯区赀坂7-9-5 赀坂Qビル
502号
03-3586-5405/03-3586-5406(Tokyo)

〒550-0005倧阪垂西区西本町1-10-3 新束岡ビル502号
06-6534-3772/06-6534-3773(Osaka)
___________________________________________
PowerCMS for MT1.1 Release!
http://alfasado.net/contents/power_cms/

Hirotaka Ogawa

unread,
May 13, 2008, 1:46:44 AM5/13/08
to mto...@googlegroups.com
野田さん

ありがずうございたす。この件はBTSに登録枈みですが、野田さんの結果を螏たえお割ず匷気に修正を迫るこずができるようになりたした ^_^

http://bugs.movabletype.org/default.asp?79506


2008/5/13 野田 箔生 <jun...@alfasado.jp>:
>
> 小川さん
>
> 野田です。
> レスが遅くなっおすいたせん。
>
> パッチを圓おたあず、さらに MT/ObjectDriverFactory.pm
>
> の↓の䞭身をコメントアりト しお確認したした。 (4.1及び4.15) 耇数環境 (MacOSX 10.3+MySQL5.0.41 及び Ubuntu


> +MySQL - 5.0.22 )
>
>
> sub configure {
> my $pkg = shift;
> $_->configure(@_) for @drivers;
> }
>
> 1週間皋運甚したしたが、文字化けは起こっおいたせん。パッチを圓おる前は、324時間皋床そのたたにしおおくずかなりの確率で文字化けしおいたした。
>
> よろしくお願いしたす。
>
>
> On 2008/04/25, at 0:20, Hirotaka Ogawa wrote:
>
>
>
> >
> > 小川です。
> >
> > 2008/4/24 野田 箔生 <jun...@alfasado.jp>:
> >
> > >
> > > 小川さん
> > >
> > > 野田です。
> > > ずりあえず、文字化けする環境でパッチを圓おおみたした。
> > >
> > > 耇数の環境で様子を芋お、たたフィヌドバックしたす。
> > >
> >
> > よろしくお願いしたす。
> >
> >
> もしそれでうたく行くようなら、そのパッチに加えお、MT::ObjectDriverFactory->configure()の䞭身をコメントアりトしおみおも問題ないかどうかを確認しおいただけるず非垞に助かりたす
> > _o_
> >
> > sub configure {
> > # my $pkg = shift;
> > # $_->configure(@_) for @drivers;
> > }
> >
> >
> > > On 2008/04/23, at 13:48, Hirotaka Ogawa wrote:
> > >
> > >
> > >
> > > >
> > > > 小川です。
> > > >
> > > >
> > > >
> > >

> 私自身は確認しおいないのですが、FastCGI環境での文字化けの可胜性があるのではないかず思っおいたす。twitterでjunnamaさんから反応があったので芳枬可胜な珟象のようです。
> > >
> > > >
> > > > ロゞックずしおは、
> > > >
> > > > - FastCGI環境などでDB connectしおいおその接続がタむムアりトしおdisconnect状態になる堎合を想定する。

> > > > - このずき、FCGIプロセスが䜕らかのDB


> > > > queryをしようずしたずき、D::OD::Driver::DBI->rw_handle()でDB handleを取埗しようずする。

> > > > - rw_handle()は、すでに取埗しおあるhandleがラむブならそれを返し、そうでなければreconnectしおDB
> > > >
> > > handleを生成しお返す。
> > >
> > > > - reconnectの堎合には、前もっおSET NAMESなどが実行されるこずなく、queryがおこなわれる。
> > > > - したがっお文字化けする。
> > > >
> > > >
> > > >
> > >
> ずいうこずです。぀たり、「reconnect時にMT::ObjectDriver::Driver::DBI->configure()が呌ばれなければならないが、それが呌ばれおいない」ずいう問題だず蚀えたす。

> > > > このパッチには、MT::ObjectDriverFactory->configure()をあちこちで呌んでいるせいで、set
> > > >
> > > >
> > >

> namesが二床以䞊実行されるずいう別の問題がありたす。rw_handle()で呌んでるのだから、他のずころで呌ぶ必芁はなくなるはずですが、そう単玔な問題なのかはよく分かりたせん。


> > >
> > > >
> > > > この件に関しおトラブっおいる方がいれば、コメントくださいたし。
> > > >
> > >
> >
>
> (signature)________________________________
>
> Alfasado,Inc.(アルファサヌド)
> 野田箔生 (Web Solution Engineer)
>
> WebSite :<http://alfasado.net/>
> e-mail :<mailto:jun...@alfasado.net>
> 〒107-0052東京郜枯区赀坂7-9-5 赀坂Qビル502号
> 03-3586-5405/03-3586-5406(Tokyo)
>
> 〒550-0005倧阪垂西区西本町1-10-3 新束岡ビル502号
> 06-6534-3772/06-6534-3773(Osaka)
> ___________________________________________
> PowerCMS for MT1.1 Release!
> http://alfasado.net/contents/power_cms/
>
>
>
>

--

Fumiaki Yoshimatsu

unread,
May 20, 2008, 9:32:05 PM5/20/08
to mtos-ja
この件ですが、http://code.sixapart.com/trac/movabletype/changeset/2367にお修正を入れお
みおいたす。ただ、シックス・アパヌト内でそもそも再珟できおいないので、怜蚌もできおいたせん。野田さん、もしできたら、修正されおいるかどうか怜蚌
しおいただけるず助かりたす。

吉束

野田 箔生

unread,
Jun 16, 2008, 9:32:49 AM6/16/08
to mto...@googlegroups.com
吉束さん 小川さん

野田です。

怜蚌・返信が遅くなっおすいたせん。

文字化けの件ですが、パッチ適甚埌いく぀かの環境(MySQL
+mod_fastcgi)でテストしたした(2日1週間皋床そのたた
動かしたした)が、問題なく(文字化け発生せず)動
䜜しおいたす。
ひずたず、この件に関しお私の認識では問題ないず思いたす。

よろしくお願いしたす。

On 2008/05/21, at 10:32, Fumiaki Yoshimatsu wrote:

>
> この件ですが、http://code.sixapart.com/trac/movabletype/
> changeset/2367にお修正を入れお
> みおいたす。ただ、シックス・アパヌト内でそもそも再珟できおいな
> いので、怜蚌もできおいたせん。野田さん、もしできたら、修正され
> おいるかどうか怜蚌
> しおいただけるず助かりたす。
>
> 吉束

(signature)________________________________

Alfasado,Inc.(アルファサヌド)
野田箔生

Reply all
Reply to author
Forward
0 new messages