我有兴趣制作一个可以自动确定 php 中包含哪些文件的应用程序。
我的意思是我想制作一个在后台运行的 C/C++ 或 C# 应用程序,当您在本地机器上开发时,它可以像您一样通过 php 显示包含的文件在本地 Apache 上运行的启动页面。
我想的是修改 php 源代码中的函数,但后来我认为这不是一个好主意,因为每个新版本的 php 都必须返回并进行相同的修改,我怀疑每个人都会那样做。
所以我的问题是,是否可以远程获取您的 php 应用程序使用的所有包含文件,然后以某种方式将它们显示给用户,而无需在您的 php 程序中使用 get_included_files()?
最佳答案
您可以完全脱离 PHP 并依赖底层操作系统来报告这些详细信息。很难将请求与包含内容相匹配,因此它只适用于开发情况。
如果操作系统是 Linux/UNIX,您可以在可执行文件上运行 strace(假设使用带有 mod_php 的 Apache,其他情况更困难)。
如果操作系统是 Windows,我不确定要使用什么,但可能是 SysInternals 实用程序之一(大多数是 GUI,但可能有一个相当于 strace 的控制台或适用于 Windows 的 strace 版本)。
另一种选择是使用 xdebug。它会向您显示更多信息,包括分析详细信息、内存使用情况等。它用作 PHP 扩展,并且确实可以轻松地在一个快照中分析整个请求。一旦有了跟踪文件,就可以使用 WinCacheGrind (Windows)、kCacheGrin(UNIX,也可能是 OS X)和其他适用于 OS X 的东西。我建议尝试这个,因为它是最简单的方法,而且如果你是的话,它会非常强大希望完成这项工作而不是进行探索性编程。
如果您有兴趣进行探索性编程,我建议的途径是查看 xdebug 的工作原理,看看您是否可以为要跟踪的函数编写一个 Hook 。
关于c# - 想做一个 php get_include_files() 增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1568163/