1

我试图弄清楚发生致命错误时如何刷新页面。基本上我正在访问图像 api 并将图像复制到我的服务器。我还每次都创建照片的缩略图版本。我会每隔一段时间收到一条错误消息,指出我的脚本试图分配过多的内存。在这个网站上好心人的帮助下,我花了无数个小时试图解决这个问题。发生该错误时,我可以自动重新加载页面,这将是完美的。谢谢!

4

3 回答 3

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.
于 2012-10-25T20:08:43.820 回答
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');
于 2013-12-06T19:16:38.410 回答
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+)
?>
于 2018-12-03T18:02:32.390 回答