2012年6月29日金曜日

カテゴリーの不具合(だらだら)

カテゴリーの表示がずっと変わらないので気になっていたのでちょっと様子を見てみました。
いままでカテゴリー操作で行ったことは、初期のカテゴリーを全削除。新規に一つカテゴリーを追加(この状態でエラーが出ていたかどうかは気にしていなかった)
そのまま使っていたのですけどね。
早速問題となるファイル名でgrepしてソースを眺める作業。
root@mzkw04nu:/home/htdocs/blog# grep "category_id.ini.php" *.php
cache.php:  include(OD.'category_id.ini.php');
utils_admin.php: $cat_id = OD.'category_id.ini.php';
utils_admin.php: if(!is_file($cat_id)) make_category_id(); // make category_id.ini.php
utils_admin.php: $ini = OD.'category_id.ini.php';
色々見ていくうちに「サブカテゴリー」の設定が無いからかも…という気がしたので試しに追加してみると…
Warning: include(owner/category_id.ini.php) [function.include]: failed to open stream: No such file or directory in /home/htdocs/blog/cache.php on line 139

Warning: include() [function.include]: Failed opening 'owner/category_id.ini.php' for inclusion (include_path='.:') in /home/htdocs/blog/cache.php on line 139

Warning: Invalid argument supplied for foreach() in /home/htdocs/blog/cache.php on line 141
設定画面でエラーが出るようになった(笑)

サブカテゴリーを削除するとエラーの表示はなくなったが、トップページの表示からカテゴリーが表示されなくなる状態に。

とても気になるのが utils_admin.php の function make_category_id() 中の include_one() のところ。
include_once 
実行中の環境に依存すると思うがinclure_oneは一度メモリーに取り込まれると2回目からは読み込まれないということなので、おそらくここが問題になっているのかな?という気がしたので試しに includeに変更。

サブカテゴリーを追加したり削除してもエラーは出なくなった。
トップページは依然としてカテゴリー表示が行われないので、記事を一つ編集画面を表示させて何も変更せずに更新してみると…
表示がまともになりました。

ここでinclude_oneに戻してから操作してみると問題はなさそうな挙動になるのはカテゴリーがまともになったからだと信じたい…
サブカテゴリーの表示がトップページのカテゴリーの枠に表示されないのが気になったので色々と更新したりサブカテゴリーを削除してみたり「その他」を追加してみたりしたところ、途中からカテゴリー名の右側の"[" "]"の中の数字が16から15に減っていることに気づいた。

category_id.ini.php の内容と記事一覧のURLのIDを見比べてみると一番上(最新のもの?)がcategory_id.ini.phpに含まれていないようだった。

思い切って category_id.ini.php を削除
カテゴリー名の変更が面で 更新ボタンを押すと…
Warning: include(owner/category_id.ini.php) [function.include]: failed to open stream: No such file or directory in /home/htdocs/blog/cache.php on line 139

Warning: include() [function.include]: Failed opening 'owner/category_id.ini.php' for inclusion (include_path='.:') in /home/htdocs/blog/cache.php on line 139

Warning: Invalid argument supplied for foreach() in /home/htdocs/blog/cache.php on line 141
エラー表示が(笑)

更新しても新たに category_id.ini.php は再作成されないようなので記事を一つ編集画面を表示して公開ボタンをおして更新してみると…

トップページのカテゴリーがまともになった雰囲気。

ここでちょっとテスト。

サブカテゴリーを一つ追加して記事のカテゴリーを移動したりしていると…
サブカテゴリーの表示が行われないので見かけ上記事の表示が減ったようにみえる。
記事のカテゴリをメインに戻すと元の数に戻る。
(サブカテゴリーが表示されていない状態がだめっぽい)

サブカテゴリーにしたまま、サブカテゴリーを削除すると、数字がおかしくなったまま。

先ほどの状態に戻りました。

挙動があやしいということはおそらくcategory_id.ini.phpを読み込んでいるところで作成後の再読み込みが行われていないのが問題なのだと思う。

動作としては再作成した直後に再読み込みする処理を入れるのが妥当なのかもしれない。が、、マルチタスクだとPHPのメモリ共有の状態にもよると思うが毎回読み込む必要がありそう。

おそらく作者が処理速度改善のためにinclude_oneを使用していると思うのでこの辺の処理を入れ替えるのは難しいところ。実際問題としては読み込んだファイルのタイムスタンプを保持して更新されていたら読み込む形が一番スマートだとは思う。

0 件のコメント:

コメントを投稿