我已经做了一些搜索,我明白不可能从耗尽的内存致命错误中恢复.我有一个运行imagecreatefromjpeg的脚本.我尝试捕获异常,我尝试用@运行函数然后检查null或false的返回值,我尝试用'die()'运行它.什么都行不通.所以我无法从中"恢复".
那么有可能在我到达它之前预测它吗?是否可以检查jpeg的未压缩大小然后优雅地死掉?我想向用户发送一条消息:"图像$图像太大而无法处理.您需要手动创建缩略图".
我的共享主机不允许我将内存大小增加到64mb以上,所以这不是一个选项.我的代码如下......
function createthumb($section,$filename,$constrain=100)
{
$dir = "$section/thumbs_$constrain";
if(file_exists($workingdir."$section/thumbs_$constrain/$filename")) return 1;
if(!file_exists($dir)) mkdir($dir);
$src = imagecreatefromjpeg($workingdir."$section/$filename");
...
Run Code Online (Sandbox Code Playgroud)
根据经验,您可以使用getimagesize()返回的像素大小:
list ($width, $height) = getimagesize($file);
$memory = $width * $height * 4; // 4 bytes per pixel
Run Code Online (Sandbox Code Playgroud)
如果此数字大于预定义的限制(根据经验确定,从32*1024*1024开始),则不要加载它imagecreatefromjpeg().