質問箱/3458

カテゴリ
サマリRecent表示について
バージョン1.4.7
投稿者ちばば?
状態質問
投稿日2006-07-19 (水) 21:54:55

質問

1.4.5_1から1.4.7へバージョンアップしたのですが、メニューバーにおいての#recentの表示(最新の○件部分の表示)がうまくいきません。 cache/recent.dat をのぞいたところ、最新の更新ファイルのリストが最終行に追記されていました。ホントはファイルの最初の行に追記されるべきものですが。。 これはバージョン1.4.7で変更のあったrecentのバグなのでしょうか? どなたかわかる方がいましたら教えていただけますでしょうか?宜しくお願い致します。

回答

  • 一度消してみる(名前を変えてみる)とどんな感じでしょう? -- teanan 2006-07-20 (木) 01:32:56
  • teananさん、回答ありがとうございます。消したりもしてみました。一旦きれいなリストが出てきて正常に動いているように見えるのですが。。その後にページを編集したり、新規作成したりすると、やはりその編集したファイルはRecent表示には出ず、cache/recent.datの最後の行に追加されています。 -- ちばば? 2006-07-20 (木) 08:47:08
  • 1.4.6におとしました。正常に動作しています。1.4.7で改善されたrecent周りでおかしいところがあるのかもしれませんね。とりあえず、動いたので当分は1.4.6にしておこうと思います。 -- ちばば? 2006-07-20 (木) 10:45:50
  • WindowsXPにて1.4.7-eucを新規に立ち上げてみましたが正常に表示されますね。 -- ぽちたま? 2006-07-20 (木) 20:29:56
  • pukiwiki.ini.phpの$maxshow の値がcache/recent.datの行数と同じか少ない時に問題が起こる模様です。(削除がうまくいってない?) -- まーる? 2006-09-11 (月) 03:18:02
  • なおApacheレンタルサーバーでPHPのバージョンは4.3.34.3.11*1です。 -- まーる? 2006-09-11 (月) 14:04:12
  • CVSを利用してチェックした結果lib/file.php Rev1.59よりRecentがおかしくなったのを確認しました。 -- まーる? 2006-09-11 (月) 17:48:45
  • 1.4.7に含まれるファイルの修正で動作させる場合はfile.phpの377行目を
    	if ($abort) {
    から
    	if (($abort) || (! $abort)) {
    に変更すると別の問題があるかもしれませんが、暫定的に正常に表示できます。 -- まーる? 2006-09-11 (月) 21:12:15
  • 昨日の修正方法では、件数が増えたときにも強制的に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);
    に変更するとよい模様です。これも暫定の修正ですが、昨日の方法に比べると軽くなるのではないかと思います。 -- まーる? 2006-09-12 (火) 22:32:14
  • 前回の修正位置だと、項目数が少ないときにも無駄に並び替えを行うので位置を変更しました*5。 -- まーる? 2006-09-18 (月) 18:01:39
  • 改めて上記の修正を行う前の状態と行った状態のものを新規設置してそれぞれ$maxshow=30にして実験してみました。そのときのcache/recent.datの先頭と最後を次に示します。 -- まーる? 2006-09-22 (金) 00:29:12
    修正前修正後
    1158862904 test41158863183 test7
    1158862830 test31158863115 test6
    1158862781 test21158863052 test5
    1158862702 test11158862905 test4
    1158856879 YukiWiki1158862831 test3
    1158856877 WikiName1158862782 test2
    1158856875 WikiEngines1158862703 test1
    1158856874 SandBox1158857484 YukiWiki
    中略
    1158856823 WikiWikiWeb158857447 Help
    1158856821 BracketName1158857445 FrontPage
    1158863051 test51158857443 FormattingRules
    1158863115 test61158857426 WikiWikiWeb
    1158863182 test71158857424 BracketName
  • 関連: dev:BugTrack2/151, dev:BugTrack2/196 -- 2009-03-08 (日) 23:40:28


*1 2006-09-22訂正
*2 こちらのほうが件数が増えたときに重いらしい
*3 戻さないとこの修正は無意味
*4 2006-09-18修正
*5 なおソース部分は挿げ替えました

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-03-08 (日) 23:40:28
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.237 sec.

OSDN