plaggerからMixiのメールが来ない。
cronで1時間に一回実行しているのだけれど、プロセスががんがん溜まっている。
で、原因を調べてみたらBbsのところで無限ループしている。
とりあえず、Mixiのページを見ながら正規表現を見直し。本当は、Mixi側が変わった場合でも無限ループしないように直すべきなんだろうけど。
あと、本家(?)のWWW::Mixiは0.50-pre2とかまで上がっているらしく、そちらでも対策されているようだ。
私の手元にあるのは0.48と0.49で、そこだけでも結構差分があって面倒なので、今回も0.48からの差分。
時間を取って最新ベースにしたほうが良いんだろうけどな~。
と言うわけでパッチ
今回の件で、plaggerが無限ループしたりすると、cronから毎時起動されてどんどんプロセスが増えてしまうことがわかったので、対策を入れる。
FreeBSDには/usr/bin/lockf と言うコマンドがあり、これを使うとファイルのロックを獲得できたときだけコマンドを実行する、と言うことができるのでcronに仕込むことにした。
cronで1時間に一回実行しているのだけれど、プロセスががんがん溜まっている。
で、原因を調べてみたらBbsのところで無限ループしている。
とりあえず、Mixiのページを見ながら正規表現を見直し。本当は、Mixi側が変わった場合でも無限ループしないように直すべきなんだろうけど。
あと、本家(?)のWWW::Mixiは0.50-pre2とかまで上がっているらしく、そちらでも対策されているようだ。
私の手元にあるのは0.48と0.49で、そこだけでも結構差分があって面倒なので、今回も0.48からの差分。
時間を取って最新ベースにしたほうが良いんだろうけどな~。
と言うわけでパッチ
今回の件で、plaggerが無限ループしたりすると、cronから毎時起動されてどんどんプロセスが増えてしまうことがわかったので、対策を入れる。
FreeBSDには/usr/bin/lockf と言うコマンドがあり、これを使うとファイルのロックを獲得できたときだけコマンドを実行する、と言うことができるのでcronに仕込むことにした。
55 * * * * /usr/bin/lockf -t 0 -s /tmp/plagger.$USER /usr/local/bin/plagger -c $HOME/plagger/config.yaml > /dev/null 2>&1みたいな感じ。最初、-tオプション(ロックのタイムアウト)を付け忘れてしまい、plaggerは一つしか起動しなかったものの、lockfがたくさん起動してしまった。-t 0をつけることで、ロックを獲得できなければその場で諦めてくれる。
追記
今回のパッチで今度こそOKだと思ったら、parse_view_event がエラーを出してくれるようになりました。
もう、パッチ作るの面倒なので変更箇所を書きます。
WWW/Mixi.pl の1539行目を、以下のようにすればOK。
my $time = sprintf('%04d/%02d/%02d %02d:%02d', $2, $3, $4, $5, $6) if ($content_event =~ /(<$td>$s(\d{4})年(\d{2})月(\d{2})日$str(\d{1,2}):(\d{2})\n*<\/$td>)/is);※ 日時の後に改行が入るようになったのが原因。
カテゴリ
Plaggerトラックバック(0)
このブログ記事を参照しているブログ一覧: WWW::Mixiの更新(その2)
このブログ記事に対するトラックバックURL: https://www.wizard-limit.net/cgi-bin/mt/mt-tb.cgi/1181
コメントする