r45

PostID周りのバグを修正しました。filectime()関数が環境によって正常に動作せず、ファイルが無限に作成される深刻な問題がありました。また、よくあるスパムで、ページを見るクライアントと、投稿を行うクライアントが異なるというものがあったので、PostId機能を拡張し、同時にこのチェックも行うようにしました。原理は、PostIdをキャッシュに書きこむときに、同時にホストも保存し、確認作業の時にこのホストが一致するかを確認することで実装しています。

また、試験的にMemcacheに対応させました。このPostId機能でファイルに保存する処理をMemcacheが使用可能なときに、そちらで行うようにしています。最終的にはページの関連キャッシュなども適用範囲を広げたいですね。

サーバーのメモリの量にもよりますが、キャッシュの容量はせいぜい10数M程度だと思うので多くの場合において十分だと思います。この対策によって抜本的な速度向上が見込めます。欠点は、memcacheは名前空間が存在しないため万一WikiFirmを組んでいた場合、更新された内容が他のWikiでも反映されてしまう可能性があります。このため、PukiWiki Adv.の実装は、ファイルのフルパスをrealpath()で取得し、これを変数名にすることによって解決させました。あまり、効率はよくないですけどね。