我有一个网关脚本,它将JSON返回给客户端。在脚本中,我使用set_error_handler捕获错误,并且仍然具有格式化的返回值。
它受到“允许的内存大小用尽”错误的约束,但是与其使用ini_set(’memory_limit’,‘19T’)之类的方法来增加内存限制,我只是想返回用户应该尝试其他方法的原因,因为它过去经常记忆。
有什么好的方法可以捕获致命错误?
就像这个答案所暗示的那样,您可以register_shutdown_function()
用来注册将检查的回调error_get_last()
。
无论是@
( 闭嘴 )运算符,还是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';
}
运行时,输出Caught atshutdown
。不幸的是,ErrorException
没有抛出异常对象,因为致命错误触发了脚本终止,随后仅在关闭函数中被捕获。
您可以$error
在关闭功能中检查阵列以获取有关原因的详细信息,然后做出相应的响应。一个建议可能是针对您的Web应用程序重新发出请求(
在不同的地址或使用不同的参数 ),然后返回捕获的响应。
我建议保持error_reporting()
较高 的值-1
( 值为 ),并使用( 如其他人所建议的
)对set_error_handler()
和进行其他所有操作ErrorException
。
我有一个网页,可以将图像上传到我的API Laravel项目。它一直工作到我上传大小巨大或等于2mb的图像,并在nginx 500错误中运行: 我在stack overflow和google上读到了大量相同的问题,但似乎没有任何效果。 仔细阅读错误消息,我可以理解,从我的PHP配置,该网站可以采取134217728字节的内存,但它无法尝试分配73728字节:它有任何意义吗?它只在允许的最大128m
我正在尝试运行artisan make:controller。 我有一个问题: 我试图增加
当我试图在PHP中操作大量数组并将结果作为HTTP POST请求的响应返回时,我遇到了一个致命错误: 允许内存大小536870912字节已用尽 我已经尝试设置以查看是否得到结果,但没有得到任何类型的响应。邮递员在我试图发出邮寄请求时总是崩溃。 数组的起始结构是这个。机身尺寸约为25mb。主阵列包含大约22k个具有此结构的阵列,我刚刚包括2个: 下面是php部分,用于操纵数组,以便通过分解每个用户的
当我试图在PHP中操作大量数组并将结果作为HTTP POST请求的响应返回时,我遇到了一个致命错误: 允许内存大小536870912字节已用尽 我已经尝试设置以查看是否得到结果,但没有得到任何类型的响应。邮递员在我试图发出邮寄请求时总是崩溃。 数组的起始结构是这个。机身尺寸约为25mb。主阵列包含大约22k个具有此结构的阵列,我刚刚包括2个: 下面的php部分用于操作数组,以便通过爆炸每个用户的时
我有以下代码: 不同的文件: 由于我编写了Mail()函数,因此出现以下错误: 致命错误:允许的内存大小134217728字节已用尽(尝试分配65488字节)
我正在使用phpspreadsheet,我想修改一个有4张表的xlsx文件。我只想在2张表中插入数据,但我想将所有4张表复制到新的xlsx文件中。当我这样做时,我会得到以下错误: 编辑:我已经尝试用下面的代码复制我不需要编辑的工作表: 但现在我得到另一个错误: 致命错误:未捕获错误:调用C:\xampp\htdocs\offerconfigurator\vendor\phpoffice\phpsp