使用ImageMagick将大型PDF转换为JPEG返回500内部错误

3

当上传的PDF较轻(即图片和效果不多,平均页数不超过40-50页)时,我的代码能够将PDF文件页面转换为JPEG图像。但是,当文件较重时,我会遇到"500内部错误"。 PDF已经被上传并且已经转换了断点之前的页面。

我的代码:

$foldername = str_replace('.','',preg_replace('/\s+/', '', microtime()));
mkdir("./mag_thumbs/".$foldername, 0755, TRUE);
try
{
    $compression_type = Imagick::COMPRESSION_JPEG; 
    $im = new imagick();
    $im->setResolution(250,250);
    $im->readimage($pdf_path); 
    $pdf_count = $im->getNumberImages();
    $im->setImageFormat('jpg');
    $im->flattenImages();    
    $im->setImageCompression($compression_type); 
    $im->setImageCompressionQuality(40); 
    $im->writeImages('./mag_thumbs/'.$foldername.'/page.jpg',true); 
    $im->clear(); 
    $im->destroy();
}
catch(Exception $e){ /* SOME TROUBLESHOOTING CODE */ }

我应该扩大服务器的超时时间吗?还有其他更好的解决方案吗?


1
一个失败的转换需要多长时间?你是在Web请求中执行此操作吗?如果是这样,并且转换需要超过几秒钟的时间,请将其移动到离线进程中,例如cron或作业队列。 - halfer
1个回答

3

在你的代码上方输入以下这些行:

ini_set('max_execution_time', 10000);//you can change this limit
ini_set("memory_limit", "6400M");//you can change this limit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接