ページの作成や編集にはユーザ登録が必要です。
ページ削除しても config/*/modtime.dat からそのページのデータが削除されない。
- 投稿者: ぐうます
- カテゴリ: 本体
- 優先度: 低
- 状態: リリース済
- 日時: 2008年12月14日 13時58分31秒
内容
ページを削除しても、更新日時保存ファイル config/*/modtime.dat からそのページのデータが削除されず、そのまま残ってしまうようです。外から見える動作としては問題ありませんが、config/*/modtime.dat にゴミデータが蓄積するので、その分だけ毎回の config/*/modtime.dat の読込み時間が無駄に長くなってしまいます。
原因
Wiki::DefaultStorage::save_page() において、ページ削除時の処理から漏れているため。
対象となる FSWiki バージョン
全てのバージョン
備考
ML 2006 年 1 月の記事:『Re: showlevel.log 内の page_level 削除について』によると、そのときの議論に基づいて参照権限保存ファイル config/*/showlevel.log 内のデータについてはページ削除時に削除されるように変更されたようです。このときに config/*/modtime.dat については変更されなかったのは、もしかすると何か意図があった可能性もあります。
パッチ
修正案のパッチを、DefaultStorage.pm.patch(406) として添付致します。
- 適用すると Wiki::DefaultStorage::save_page() が変更され、ページ削除時に config/*/modtime.dat からそのページの更新日時データが削除されるようになります。
- 本パッチ適用前の運用で既に config/*/modtime.dat に残ってしまったゴミデータについては、本パッチを適用しても削除されません。必要であれば手動で各ページの有無を確認し、削除済みページに該当する行を config/*/modtime.dat から削除下さい。
- 本パッチは、FSWiki 3.6.3dev3 に対して作成しました。そのまま patch できると思われるのは FSWiki 3.6.3dev1〜3 になります。FSWiki 3.6.2 を含む、それ以前のバージョンに適用する場合には、適宜修正下さい。
--- ../wiki3_6_3dev3.orig/lib/Wiki/DefaultStorage.pm Mon Dec 31 12:05:37 2007 +++ lib/Wiki/DefaultStorage.pm Sun Dec 14 12:27:26 2008 @@ -146,8 +146,11 @@ if($content eq ""){ $self->_create_page_list_file($page, 'remove'); unlink($wikifile); $wiki->set_page_level($page); + my $modtime = &Util::load_config_hash($wiki,$MODTIME_FILE); + delete $modtime->{$page}; + &Util::save_config_hash($wiki,$MODTIME_FILE,$modtime); # 削除時はバックアップファイルを残す #unlink(&Util::make_filename($wiki->config('backup_dir'),&Util::url_encode($page),"bak")); } else { $self->_create_page_list_file($page, $flag);
コメント
- パッチをコミットしました。 - たけぞう (2008年12月14日 16時07分31秒)
- コミットしていただき、ありがとうございます。 - ぐうます (2008年12月14日 17時47分52秒)
- 3.6.3でリリースしました。 - たけぞう (2008年12月14日 23時30分19秒)
最終更新時間:2008年12月14日 23時30分26秒