我一直在使用WPDM为我的客户端创建一个文件系统。不幸的是,WPDM没有任何文件类型的预览功能,如psd,ai,pdf等,所以我一直在尝试使用ImageMagick自己创建此功能。
我可能以错误的方式接近这一点,因为我在使用代码时遇到了一个主要问题。它只创建第一个缩略图(或两个,取决于 psds 文件大小),然后崩溃并出现内部服务器错误,甚至一个缩略图也会使网站变得非常慢。
// Function to create preview images for all files in WPDM package
function create_previews() {
$file_list = uploaded_files_path();
$preview_image_path_list=array();
foreach ($file_list as $file) {
$imagick = new Imagick();
$img = wp_get_image_editor($file);
$imagick->readImage($file);
$filenamelres = $img->generate_filename('thumb', ABSPATH.'wp-content/uploads/thumbs/', 'png' );
if ( ! is_wp_error( $imagick ) ) {
if ( ! file_exists($filenamelres) ) {
$imagick->setIteratorIndex(0);
$imagick->thumbnailImage(200, 0);
$imagick->writeImage($filenamelres);
$preview_image_path_list[] = $filenamelres;
} else {}
} else {
$preview_image_path_list[] = $filenamelres;
}
$imagick->destroy();
}
return $preview_image_path_list;
}
这里有没有不同的路线。我可以在不给服务器带来压力的情况下做同样的事情吗?
根据我的评论:在任何非平凡大小的系统上,缩略图都应该在后台生成,而不是在 Web 服务器进程中生成。切换到 cron 或作业队列,同时使用占位符缩略图。
不过,值得找出触发"内部服务器错误"的原因 - 您可能需要打开错误日志记录以确保记录它。