Imagemagick - PHP批量转换缩略图,没有服务器压力



我一直在使用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 或作业队列,同时使用占位符缩略图。

不过,值得找出触发"内部服务器错误"的原因 - 您可能需要打开错误日志记录以确保记录它。

最新更新