php - 在PHP中,如果没有错误发生,抑制函数的错误输出(通过@)是否会影响性能?

标签 php mysql error-handling

与我们的大多数代码库一样,我们的 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/

相关文章:

mysql - 自动触发更新mysql中的记录

javascript - Javascript 如何解释返回 500?

php - Laravel 5.5 - 创建新项目的问题

mysql - 获取每组分组结果的前n条记录

php - 如何在laravel的 Blade 文件中显示最新的('updated_at')记录

php - 为房地产 php 应用程序设计数据库,表中的列太多

debugging - 预期的行为?除在 Debug模式下外,MATLAB会忽略反序列化时的错误

node.js - Node.js 应用程序监控服务 - OpBeat 替代方案

php - 如何在htaccess中创建类似YouTube的短域重定向?

javascript - 将 PHP 变量传递到 Flot 图表中