【问题标题】:Big PDF to JPEG Conversion with ImageMagick returns 500 Internal Error使用 ImageMagick 将大 PDF 转换为 JPEG 返回 500 内部错误
【发布时间】:2014-05-01 16:10:48
【问题描述】:

我的代码在上传后将 PDF 文件页面转换为 JPEG 图像,并且在处理轻型 PDF 时一切正常(图像和效果不多,而平均页数不超过 40-50)。但是当文件较重时,我会收到 “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 */ }

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

【问题讨论】:

  • 转换失败需要多长时间?您是在 Web 请求中执行此操作吗?如果是,并且转换时间超过几秒钟,请将其移至离线进程,例如 cron 或作业队列。

标签: php pdf imagemagick jpeg imagick


【解决方案1】:

在您的代码上方输入这些行:

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

【讨论】:

    猜你喜欢
    • 2015-09-05
    • 2017-03-02
    • 2012-03-02
    • 1970-01-01
    • 2012-09-15
    • 2011-09-29
    • 2012-10-07
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多