超时致命错误处理


Timeout fatal error handling

我需要发送500封邮件,我希望每封邮件都有一个时间限制。

目前,我运行一个Ajax调用来发送电子邮件。我需要对每封电子邮件都有一个客户端Javascript的答案,因此要填写一个进度条,以便用户看到发货的进度。

问题是我使用了set_time_limit,它返回了一个致命错误。我想要的是管理超时(通过异常或其他一些想法),以返回JSON通过jQuery消费。

可以通过register_shutdown_function()处理致命错误

<?php
error_reporting(0);
function shutdown() {
    $error = error_get_last();
    if ($error['type'] === E_ERROR) {
        //handle timeout error here
    }
}
register_shutdown_function('shutdown');
set_time_limit(1);
// send mails