【问题标题】:How to determine 500 error and show custom error message如何确定 500 错误并显示自定义错误消息
【发布时间】:2019-01-03 10:48:44
【问题描述】:

我正在尝试从 excel 表中导入一些数据,然后将此数据插入我的数据库中,我想要的是,如果用户上传了大量条目,让我们在 excel 表中说 16000 个条目并尝试上传大量数据在我的服务器上,然后服务器显示 500 个内部服务器或服务器来处理浏览器上的此请求,因此我必须在 php 服务器端捕获此错误并向用户显示我的自定义消息。

为此,我试图抓住它,但它不起作用,所以请帮助我。

<?php
    ini_set('display_errors', 1);

    function import_client()
    {
        try
        {
            //my php code in this i am reading excel
            //sheet data and inserting in my database.
        }
        catch (Exception $e) 
        {
            echo "you are importing huge data
            hence server will not unable to handle this request";
        }
    }
?>

【问题讨论】:

标签: php codeigniter http codeigniter-3


【解决方案1】:

错误代码 500 是内部服务器错误。它会在您的服务器出现错误时显示。之后它不会执行任何服务。所以你没有办法处理它。

【讨论】:

  • 不完全准确。 HTTP 500 错误是由网络服务器(Apache、Nginx 等)引发的,因为服务器端发生的事情不如其他 5xx 错误详细和精细,但仍然可以管理它以产生更明确的(和更少的信息-disclosure 倾向)方式比一般的 HTTP 500 错误。如In the user guide 所述,codeigniter 中的错误处理非常可能@
  • 我不会重新命令你这样做。您可以使用 htaccess 重定向您的错误页面。试试这个:paulund.co.uk/use-htaccess-to-redirect-custom-error-pages
  • 是的,如果(大 IF)您使用 Apache,那是另一种选择。在 Nginx 中也有类似的方法来处理错误。但是,将其与基于代码的错误处理相结合是正确的方法。
  • 我不确定。但当我工作时,我确信看到错误代码 500 非常罕见。但试一试。我想没有其他方法可以处理错误代码 500,501 等。这是我知道的最好方法。
【解决方案2】:

由于您使用的是 CodeIgniter,因此可以使用 CI 的内置功能执行错误处理Here, in CI's User Guide

也就是说,对于尝试捕获或其他方法未明确捕获的所有情况,错误处理应该是正确编码的应用程序的最后一层。至少在您的开发环境中,您应该尝试在启用完整日志记录和错误报告的情况下重现错误,并尝试找出如何防止错误(而不仅仅是在发生错误时处理它)。

即使您没有提供太多数据,也会想到很多事情。如果处理时间过长触发了 5xx 错误,可以考虑将上传的工作表拆分成块,分批处理。也许您的数据库正在运行,在这种情况下,您可能会面临服务器规范问题,甚至在每次插入时都会面临许多索引计算。工作表本身可能包含一些会干扰您的插入的内容(例如,违反表/字段定义)。

您是否尝试确定错误原因?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2018-07-21
    • 1970-01-01
    • 2016-09-19
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多