おぎろぐはてブロ

なんだかんだエンジニアになって10年以上

PHP5.3からのclearstatcache()のデフォルト動作の再変更

stat()の最後の1つのキャッシュをクリアするだけの関数だった clearstatcache() が、PHP5.1からマニュアルの記載無く realpath cache をクリアするようになり、そして PHP5.3 からは、デフォルトでは realpath cacheをクリアしないようになりました。/( ^o^ )\ というのを昔の記事に追記しました。

realpath cacheが何かについては、以下を参照ください。

open_basedirやinclude_pathの探索のために、symlinkを展開するなどしてファイルパスを正規化する関数が多数呼ばれるのをキャッシュするようにしたものです。ただ、デフォルトのキャッシュ値が少ないから増やした方がいいよというのをこのエントリには書いています。
先日のsymfony Liveで講演された、Building A Platform From Open Source At Yahooというスライドの中でも (P. 45)

increase realpath_cache_size + realpath_cache_ttl

Building A Platform From Open Source At Yahoo

と書かれてます。特にディレクトリ階層がやたら深かったり、ディレクトリの数が多かったりすると、キャッシュサイズが不足しがちなので、増やしてみる価値はあります。