PHP包括路径顺序和状态缓存



我正在构建一个框架,产品实例使用主框架文件,直到有自己的文件的副本。为了实现这一目标,我已经完成了以下操作:

set_include_path(MY_PRODUCT_ROOT.'/' . PATH_SEPARATOR . MY_FRAMEWORK_ROOT.'/');

因此,如果我致电include('view-users.php');,它将首先在my_product_root中查看/view-users.php,如果找不到的话,它将查看my_framework_root/view-users.php。

此过程非常好,直到我将文件添加到产品根为止。我知道PHP/Apache正在缓存其中,并且有人认为运行clearstatcache(true);以清除任何状态缓存。PHP可能在其中使用file_exists include();并认为新文件仍然不存在。我尝试重新启动Apache而无效。

不幸的是,运行clearstatcache(true);也无济于事。只有我删除my_framework_root/file时,才认为清除缓存并重试

我有点困惑,我知道我们需要刷新PHP/Apache对文件是否存在的理解,但是clearstatcache(true);没有帮助...

有什么想法?

update :校正,重新启动Apache似乎现在有所帮助。我重申,只有在尝试将文件添加到my_product_root,重叠现有my_framework_root文件时才会发生这种情况,以进行自定义

更新:开发环境是Zend Server CE CE PHP 5.3.14,生产环境Centos Linux HTTPD,PHP 5.3 。在我的开发环境上启用Zend Optimizer的事实可能会产生效果,也不使用APC或任何其他缓存脚本

zend Optimizer 通过OPCODE缓存和优化加快了PHP的执行。它将预编译的脚本字节码存储在共享内存中。这消除了从磁盘中读取代码的阶段,并在将来访问中对其进行了编译。为了进一步改进性能,已将存储的字节码优化以用于更快的执行。

这是在包含中找到的文件内容,因此ClearStatCache不起作用。我已经禁用了Zend Optimizer,并且现在起作用。

相关内容

  • 没有找到相关文章

最新更新