在运行之前,可以检查imagecreatefromjpeg是否会导致内存耗尽致命错误?

MrV*_*mes 3 php

我已经做了一些搜索,我明白不可能从耗尽的内存致命错误中恢复.我有一个运行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)

Ben*_*min 8

根据经验,您可以使用getimagesize()返回的像素大小:

list ($width, $height) = getimagesize($file);
$memory = $width * $height * 4; // 4 bytes per pixel
Run Code Online (Sandbox Code Playgroud)

如果此数字大于预定义的限制(根据经验确定,从32*1024*1024开始),则不要加载它imagecreatefromjpeg().