2010-12-08 70 views
0

使用PHP(5)或apache debian web服务器上的其他Linux工具可以获取单个http请求的文件请求吗? 由于性能原因,我想将它们与我的蛋糕应用程序的缓存“版本”进行比较。计数触发的文件请求数

非缓存,可能在某些视图中超过100。缓存只有10(希望)。

AFAIK有3个主要的文件功能: file_get_contents()函数,文件()和手动fopen()函数等

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

+0

如果你只在缓存版本如何执行与非缓存的版本感兴趣,只需启用缓存再次禁用缓存运行探查一次,然后。这应该告诉你的区别。可以为此使用Xdebug。如果你想做负载测试,使用`ab`命令。 – Gordon 2010-12-08 15:20:15

+0

好吧,在这个特殊情况下,更多的文件请求的PHP脚本需要完成最终结果的数量。不仅用于与缓存版本进行比较,还用于追踪大多数文件请求并尝试减少计数的目标。 – mark 2010-12-08 15:32:02

回答

2

这个建议似乎并不直观,但是一旦你安装并启用了XDebug你可以采取旁观xdebug - function trace

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

监控文件系统相关的功能,你可以做文本文件的解析(分析结果),并做可匹配功能的计数(可编程或手动)

0

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

+0

有趣的课。我想没有人在之前尝试过...... :)至少我的搜索没有显示出任何结果来计算请求。 – mark 2010-12-08 15:34:50

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()

+0

肯定 - 但这需要我的CAKE核心进行修改。这就是你想避免的。使用带有修改内核的框架会使内核更新变得相当困难。 – mark 2010-12-08 15:46:53

1

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

那些所谓的“函数跟踪“可以帮助你在应用程序新手时,或者当你试图找出应用程序运行时到底发生了什么。函数跟踪还可以选择显示传递给函数和方法的变量的值,并返回值。在默认跟踪中,这两个元素不可用。

0

有一个名为ADB(高级PHP一个PECL extention调试器),它有两个函数,对于像这样的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); 
} 

它看起来像亚行也很容易安装。

http://www.php.net/manual/en/book.apd.php