c# - 想做一个 php get_include_files() 增强

标签 c# php c++ apache

我有兴趣制作一个可以自动确定 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 的东西。我建议尝试这个,因为它是最简单的方法,而且如果你是的话,它会非常强大希望完成这项工作而不是进行探索性编程。

http://xdebug.org/

如果您有兴趣进行探索性编程,我建议的途径是查看 xdebug 的工作原理,看看您是否可以为要跟踪的函数编写一个 Hook 。

关于c# - 想做一个 php get_include_files() 增强,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1568163/

相关文章:

c# - 无法更改目标框架?

c# - 如何在 3d 空间 C# 中给定三个点找到圆的半径

php - 如何修复 laravel 5.2 这个错误 "Maximum function nesting level of ' 10 0' reached, aborting!"?

使用 webClient.UploadString 的 C# 单元测试

php - PHP 中的数字正则表达式

php - 如何在我的默认 Controller 上为焦点页面设置 Laravel 3 路由?

c++ - 在 C++ 结构中处理未知类型的最佳方法是什么?

c++ - 是否有任何 C++11 线程安全保证适用于使用 C++11 编译/链接的第三方线程库?

c++ - 这个声明是什么意思 "int(*ptr[3])();"?

c# - 使用linq拆分数字和字符串