计算触发的文件请求数

时间:2010-12-08 15:01:08

标签: php cakephp apache2 debian cakephp-1.3

是否可以在apache debian webserver上使用PHP(5)或其他Linux工具来获取单个http请求的文件请求? 出于性能原因,我想将它们与我的蛋糕应用程序的缓存“版本”进行比较。

非缓存在某些视图中可能超过100。 缓存最多只有10个(希望如此)。

afaik有3个主要文件功能: file_get_contents(),file()和手动fopen()等

但是我无法覆盖它们,因此我无法在其中放置logRequest()函数。 还有其他方法吗?将回调附加到函数?拦截文件请求?

5 个答案:

答案 0 :(得分:2)

此建议似乎并不直观,但您可以查看xdebug - function trace

安装并启用xdebug后,您可以使用所有类型的配置将配置文件保存到磁盘文件中,以后可以检索它。如将不同URL的分析结果保存到不同的磁盘文件中。

要监视与文件系统相关的功能,您可以对文本文件进行解析(分析结果)并计算可匹配的功能(可编程或手动)

答案 1 :(得分:1)

您可以使用Xdebug记录所有函数调用

  

那些所谓的“函数跟踪”可以帮助您在刚接触应用程序时或者在尝试弄清楚应用程序运行时到底发生了什么。函数跟踪还可以选择显示传递给函数和方法的变量值,还可以返回值。在默认跟踪中,这两个元素不可用。

答案 2 :(得分:0)

有趣的问题。我从stream_wrapper开始......尝试用自定义类替换它们。

答案 3 :(得分:0)

我这样做的方法是创建一个自定义函数来包装你需要的函数。

function custom_file_get_contents($filename) {
    $GLOBALS['file_get_contents_count']++;
    return file_get_contents($filename);
}

只需用custom_file_get_contents替换对file_get_contents的所有调用。这只是一个基本的例子,但你明白了。

旁注,如果您想要计算脚本包含(或要求)的文件数量,请参阅get_included_files()

答案 4 :(得分:0)

有一个名为ADB(高级PHP调试器)的pecl扩展,它具有对这样的cse非常有用的两个函数 - override_function()和rename_function()。你可以这样做:

rename_function('file_get_contents', 'file_get_contents_orig');

function file_get_contents($filename) {
    logRequest();
    return file_get_contents_orig($filename);
}

看起来ADB也很容易安装。

请参阅http://www.php.net/manual/en/book.apd.php