カテゴリ | |
サマリ | Recent表示について |
バージョン | 1.4.7 |
投稿者 | ちばば |
状態 | 質問 |
投稿日 | |
1.4.5_1から1.4.7へバージョンアップしたのですが、メニューバーにおいての#recentの表示(最新の○件部分の表示)がうまくいきません。
cache/recent.dat をのぞいたところ、最新の更新ファイルのリストが最終行に追記されていました。ホントはファイルの最初の行に追記されるべきものですが。。
これはバージョン1.4.7で変更のあったrecentのバグなのでしょうか?
どなたかわかる方がいましたら教えていただけますでしょうか?宜しくお願い致します。
- 一度消してみる(名前を変えてみる)とどんな感じでしょう? -- teanan
- teananさん、回答ありがとうございます。消したりもしてみました。一旦きれいなリストが出てきて正常に動いているように見えるのですが。。その後にページを編集したり、新規作成したりすると、やはりその編集したファイルはRecent表示には出ず、cache/recent.datの最後の行に追加されています。 -- ちばば
- 1.4.6におとしました。正常に動作しています。1.4.7で改善されたrecent周りでおかしいところがあるのかもしれませんね。とりあえず、動いたので当分は1.4.6にしておこうと思います。 -- ちばば
- WindowsXPにて1.4.7-eucを新規に立ち上げてみましたが正常に表示されますね。 -- ぽちたま
- pukiwiki.ini.phpの$maxshow の値がcache/recent.datの行数と同じか少ない時に問題が起こる模様です。(削除がうまくいってない?) -- まーる
- なおApacheレンタルサーバーでPHPのバージョンは
4.3.34.3.11*1です。 -- まーる
- CVSを利用してチェックした結果lib/file.php Rev1.59よりRecentがおかしくなったのを確認しました。 -- まーる
- 1.4.7に含まれるファイルの修正で動作させる場合はfile.phpの377行目を
if ($abort) {
から
if (($abort) || (! $abort)) {
に変更すると別の問題があるかもしれませんが、暫定的に正常に表示できます。 -- まーる
- 昨日の修正方法では、件数が増えたときにも強制的に1.4.6で使用していたルーチン*2に飛ばすものでしたが、次の方法でやるほうが適切ではないかと思いますので、書き込みます。上記の修正を行った場合はまず元に戻した後に*3、file.phpの
362行目付近367行目付近*4を
// Check
$abort = count($recent_pages) < $maxshow;
if (! $abort) {
// Write
ftruncate($fp, 0);
rewind($fp);
に
arsort($recent_pages, SORT_NUMERIC);
を追加して
// Check
$abort = count($recent_pages) < $maxshow;
if (! $abort) {
arsort($recent_pages, SORT_NUMERIC);
// Write
ftruncate($fp, 0);
rewind($fp);
に変更するとよい模様です。これも暫定の修正ですが、昨日の方法に比べると軽くなるのではないかと思います。 -- まーる
- 前回の修正位置だと、項目数が少ないときにも無駄に並び替えを行うので位置を変更しました*5。 -- まーる
- 改めて上記の修正を行う前の状態と行った状態のものを新規設置してそれぞれ$maxshow=30にして実験してみました。そのときのcache/recent.datの先頭と最後を次に示します。 -- まーる
修正前 | 修正後 |
1158862904 test4 | 1158863183 test7 |
1158862830 test3 | 1158863115 test6 |
1158862781 test2 | 1158863052 test5 |
1158862702 test1 | 1158862905 test4 |
1158856879 YukiWiki | 1158862831 test3 |
1158856877 WikiName | 1158862782 test2 |
1158856875 WikiEngines | 1158862703 test1 |
1158856874 SandBox | 1158857484 YukiWiki |
中略 |
1158856823 WikiWikiWeb | 158857447 Help |
1158856821 BracketName | 1158857445 FrontPage |
1158863051 test5 | 1158857443 FormattingRules |
1158863115 test6 | 1158857426 WikiWikiWeb |
1158863182 test7 | 1158857424 BracketName |
- 関連: dev:BugTrack2/151, dev:BugTrack2/196 --