ページを削除した直後に差分の削除やバックアップの削除を行うと、稀に下記のような表示が出ます。
is_freeze(): fopen() failed: ページ名
ちなみに発生するのは、このdevとdemoサイトのみで、officialでは発生しないようです
→ officialでも発生することを確認しました。
本来ならば、is_page() でFALSEが返ってきてfopenに行かないはずなのですが、そうではないようです。
lib/func.php(v1.73): 78行目付近 if (! $function_freeze || ! is_page($page)) { $is_freeze[$page] = FALSE; return FALSE; } else { $fp = fopen(get_filename($page), 'rb') or die('is_freeze(): fopen() failed: ' . htmlspecialchars($page));
is_page()では file_exists()しているだけなので、ファイルキャッシュ系のトラブルのようです。
// ---- // Delete? if ($dir == DATA_DIR && $str === '') { // Page deletion if (! $file_exists) return; // Ignore null posting for DATA_DIR // Update RecentDeleted (Add the $page) add_recent($page, $whatsdeleted, '', $maxshow_deleted); // Remove the page unlink($file); // Update RecentDeleted, and remove the page from RecentChanges lastmodified_add($whatsdeleted, $page); // Clear is_page() cache is_page($page, TRUE); return; } else if ($dir == DIFF_DIR && $str === " \n") {is_page($page, TRUE); としてclearstatcache() を呼んでいるのに・・・って、clearstatcache の説明 では、
もし存在しないファイルに対して file_exists() をコールする場合、ファイルを作成するまで この関数は FALSE を返します。 もしファイルを作成した場合、 たとえファイルを削除したとしても TRUE を返します。 しかし、unlink() はキャッシュを自動的にクリアします。とありますね。 -- 2008-03-09 (日) 10:28:33
> リロードでエラーが起きたり起きなかったりするのは、複数ある > バックエンド web サーバのどれに繋がるかが切り替わる為です。 > > それはさておき、Stable NFS file handle のエラーが出て > しまうのは、おそらく現在使っているプロジェクトwebサーバの > カーネルの問題ですので、入れ替えて対処致します。 > プロジェクトwebサーバ群のカーネル入れ替えを行いました
> これ以降問題は解決しているはずですが、自分のプロジェクトで > 問題がないかどうかご確認をお願い致します。