我可以在整个PHP脚本中禁用/跳过某个功能吗?

时间:2013-03-14 00:08:43

标签: php

我想调试file_exists()占用我网站的时间。为了对此进行调试,我想暂时禁用file_exists()的所有实例,以尝试在没有它的情况下网站生成的速度。

有没有简单的方法可以做到这一点?我正在使用PHP 5.3.3。

3 个答案:

答案 0 :(得分:0)

你可以在PHP中使用disable functions,但这完全符合它的建议:它完全禁用了该功能。你正在寻找的东西是不可能的,因为如果你“禁用”一个函数,但不希望脚本失败,那么该函数必须返回一些有用的东西。 PHP如何为每个内置和用户空间函数返回?特别是因为PHP无法知道每个上下文中的正确值:在某些情况下,file_exists()应返回true,在某些false中脚本工作。当数组和对象发挥作用时,它(显然)会非常复杂。

另一种方法是使用自定义函数覆盖函数:PHP首先在当前命名空间中搜索非限定函数名称,然后才使用全局函数名称。这意味着您可以在每个名称空间中创建名为file_exists()的函数。

但我最后的建议是:不要破解你的代码进行调试和分析。 改为使用调试器和分析器

答案 1 :(得分:0)

尝试编写一个唯一的函数,并将其称为file_exists(),而不是<?php function call_file_exists($file) { $debug = true; if($debug) { $_SESSION["count"]++; //count all event when file_exist called return false; } else { //if no debug, normal function call and return the result return file_exists($file); } } ?> ,例如:

$_SESSION["count"];

因此,如果您打印{{1}},它将显示呼叫的数量。

答案 2 :(得分:0)

安装xdebug,运行profiler,查看所有file_exists次调用所需的时间(或任何其他功能),调用次数等等。