今、このヒビノアワが動いているのは、WebArenaというレンタルサーバ上でなんだけども、ここは、CGIのタイムアウトに関して非常にシビアで、通常のエントリは問題ないのだけれど、「すべてを再構築」したり、エクスポートしようとしたりすると、途中でInternalServerErrorが発生してしまう。
この状況に嫌気が差してきて、別のところに移行しようかなーと思っていた。
しかし、なにしろ、エクスポートがうまくいかないんだから、どうにもならない。
というわけで、分割エクスポートする方法がないか考えてみた。
結局のところ、すべてを一度にエクスポートするからいけないわけだ。
小さい単位で、何度かに分けてエクスポートすればうまくいくはずだ。理論的には。
というわけで、MTのエクスポート部分の改造をしてみた。
ちなみに、これは、MT2.661のソースでの修正。
lib/MT/App/CMS.pmの中のexport関数を修正する。
my $iter = MT::Entry->load_iter({ blog_id => $blog_id },
{ 'sort' => 'created_on', direction => 'ascend' });
この部分を
my $y = '2004';
my $m = '01';
my $d = '01';
my $ey = '2004';
my $em = '11';
my $ed = '01';
my ($start, $end) = ($y . $m . $d . '000000', $ey . $em . $ed . '235959');
my $iter = MT::Entry->load_iter({ blog_id => $blog_id ,
created_on => [ $start, $end ] },
{ range => { created_on => 1 }, 'sort' => 'created_on', direction => 'ascend' });
例えば、こんな感じに置き換える。
$y、$m、$dは、始まりの日時。$ey、$em、$edは終わりの日時。月日が1桁の時は0を入れてあげてください。(ほんとは、sprintfを使うべきなんだけど^^;)
で、これを、アップロードして、エクスポートを実行。
また、日付を変えて、アップロード、エクスポートと言う感じ。
スマートではないけど、とりあえず、これで、目的の動作はするみたい。
Posted by CHEEBOW at 2004年10月22日 18:06 | TrackBack