与我们的大多数代码库一样,我们的 mysql 处理函数是自定义构建的。
它们工作得很好,并且包含许多日志分支。
我们的查询执行函数的简化版本如下所示:
if(!$result=mysql_query($query)){
file_put_contents(QUERYLOG,'Query '.$query.' failed execution');
}
这过于简化,但您得到了基本的想法:如果查询失败,它们将被记录到单独的查询日志中。
这是跟踪任何需要查看的查询的好方法。
我的问题如下:
有了上面的内容,一个小问题是,如果查询失败,我们的查询日志和 php 日志都会被标记为错误,因为 mysql_query (...或 mysql_connect、mysql_select_db 等...)将产生一个 PHP 错误。
我们想要做的是通过以下方式抑制 php 错误:
.... $result=@mysql_query($query ....
所以,就问题而言:
在php中使用@错误抑制机制,如果不产生错误,是否会对性能产生影响?还是仅在产生错误时才影响性能?
我知道我知道,微观优化,但正如你可以猜到的,或者查询执行函数每天使用数百万次,所以即使是很小的性能影响也值得检查。
最佳答案
做了一些“研究”
$s = microtime(true);
$a = array('1','2');
$b = $a[1];
echo microtime(true)-$s;
给出1.1205673217773E-5
如果我使用 $b = @$a[1];
我会得到更多:1.5974044799805E-5
所以:是的,有区别,但不,你不应该打扰。
关于php - 在PHP中,如果没有错误发生,抑制函数的错误输出(通过@)是否会影响性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606367/