我试图找出在发生致命错误时如何刷新页面。基本上我正在访问图像api并将图像复制到我的服务器。我每次都在创建照片的缩略图版本。我会偶尔收到一条错误消息,说明我的脚本试图分配太多内存。在这个网站上的好人帮助下,我花了无数个小时试图解决这个问题。这将是完美的我可以在发生错误时自动重新加载页面。谢谢!
答案 0 :(得分:0)
我不确定内存不足会让你做任何事情(从未尝试过)但你可以定义自己的错误处理程序http://php.net/manual/en/function.set-error-handler.php
编辑:
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
echo "Oh no! Error: $errno, $errstr";
exit("try sticking a meta redirect here once you get the echo appearing");
}
set_error_handling('myErrorHandler');
// Now write something that runs out of memory, see if handler catches it.
答案 1 :(得分:0)
那里有一个错误,应该是“set_error_handler”而不是“set_error_handling”
set_error_handler('myErrorHandler');
也许这样的事情会有所帮助。
function myErrorHandler($errno, $errstr, $errfile, $errline)
{
$refresh = '10';
$pathdirectory = "";
echo "Oh no! Error: $errno, $errstr";
echo "<meta http-equiv=\"refresh\" content=\"$refresh;url=$pathdirectory\" />";
}
set_error_handler('myErrorHandler');
答案 2 :(得分:0)
将此代码放到页面开始处以进行寄存器关闭事件(仅在PHP 5.2+上支持)
代码详细信息: 每当任何致命错误或其他错误将崩溃或关闭您的php页面时,此事件将在X($ errorRefreshSecs)秒后**调用并自动刷新当前页面**
<?php
function shutDownFunction() {
$error = error_get_last();
// fatal error, E_ERROR === 1
if ($error['type'] === E_ERROR) {
//do your stuff
echo "<font color='red'>Oh no! fatal Error: ".$error["message"]." at line number: ".$error["line"]."</font><br>";
$errorRefreshSecs="3";
echo "please auto refresh page after $errorRefreshSecs Secs and try again!<br>";
?>
<meta http-equiv="refresh" content="<?php echo $errorRefreshSecs;?>; URL=<?php echo 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>">
<?php
}//if end //if ($error['type'] === E_ERROR) {
}
register_shutdown_function('shutDownFunction');//(only support on PHP 5.2+)
?>