【发布时间】: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