测试脚本test.php:
1 2 3 4 5 6 |
<?php while(1) { clearstatcache(); echo file_get_contents("link.txt"), "\n"; sleep(2); } |
1 2 3 |
echo a >a.txt echo b >b.txt ln -s link.txt a.txt |
1 |
$ php test.php |
在另外一个terminal中修改link.txt 链接到 b.txt
1 |
$ rm -fr link.txt ; ln -s link.txt b.txt |
发现输出的依然是a.txt 的内容(至少一段时间内是的)
strace 分析一下,发现在cache期间,根本不会去访问 link.txt 的
原因:
realpath_cache 缓存了软连接 默认时间 120s
解决办法:
修改php.ini 中 realpath_cache 的配置