Hướng dẫn php catch memory exhausted error - php bắt lỗi hết bộ nhớ

Như câu trả lời này cho thấy, bạn có thể sử dụng register_shutdown_function[] để đăng ký một cuộc gọi lại sẽ kiểm tra error_get_last[].

Bạn vẫn sẽ phải quản lý đầu ra được tạo từ mã vi phạm, cho dù bởi toán tử @ [Shut Up] hoặc ini_set['display_errors', false]

ini_set['display_errors', false];

error_reporting[-1];

set_error_handler[function[$code, $string, $file, $line]{
        throw new ErrorException[$string, null, $code, $file, $line];
    }];

register_shutdown_function[function[]{
        $error = error_get_last[];
        if[null !== $error]
        {
            echo 'Caught at shutdown';
        }
    }];

try
{
    while[true]
    {
        $data .= str_repeat['#', PHP_INT_MAX];
    }
}
catch[\Exception $exception]
{
    echo 'Caught in try/catch';
}

Khi chạy, điều này xuất ra Caught at shutdown. Thật không may, đối tượng ngoại lệ ErrorException không bị ném vì lỗi nghiêm trọng kích hoạt kết thúc tập lệnh, sau đó chỉ bị bắt trong chức năng tắt máy.

Bạn có thể kiểm tra mảng $error trong chức năng tắt để biết chi tiết về nguyên nhân và trả lời phù hợp. Một đề xuất có thể được đưa lại yêu cầu trở lại đối với ứng dụng web của bạn [tại một địa chỉ khác hoặc với các tham số khác nhau tất nhiên] và trả về phản hồi đã bị bắt.

Mặc dù vậy, tôi khuyên bạn nên giữ

Bài Viết Liên Quan

Chủ Đề