PHP:die()必须死吗?

时间:2010-03-01 09:20:49

标签: php mysql

让die()住在生产环境中被认为是不好的做法吗?刚刚读过这篇文章http://www.phpfreaks.com/blog/or-die-must-die,其中作者对在生产环境中使用这种东西的人产生了影响。所以我不应该这样编码:

$connection = mysql_connect($db_host, $db_username, $db_password);
if (!$connection){
    die ("Could not connect to the database.");
}

你如何编码?

3 个答案:

答案 0 :(得分:3)

die()是一个非常粗略的陈述......在开发阶段很有用(非常),我在生产阶段发现错误

您应该分析,监控和记录致命错误,并显示足够的消息,例如“无法连接到服务器,请在几分钟内尝试或写信给admin@yourhost.com以通知问题”!

答案 1 :(得分:3)

每次出错都不会,是吗?你的申请为什么要这样做?

正确的方法是拦截错误并以上下文相关的方式处理它们,例如

try {
    application goes here

    $conn = mysql_connect(...)
    if(!$conn)
        throw ....
    ....
} catch(Exception $err) {
     if(PRODUCTION) {
        log error
        say something nice
     }
     if(DEBUG) {
         var_dump($err);
     }
}

答案 2 :(得分:1)

在富有成效的环境中,您不应该将有关系统的任何错误/信息暴露给外界。

重要的是,记录所有错误。如果您正在谈论网站,我会发送HTTP status 500作为回复。