Imagemagick - PHP 在没有服务器压力的情况下批量转换缩略图?

Imagemagick - PHP batch convert thumbnails without server stress?

我一直在使用 WPDM to create a file system for a client of mine. Unfortunately WPDM doesn't have any preview functionality for filetypes like psd, ai, pdf, etc so I've been trying to create this functionality myself by using 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;
}

这里有不同的路线吗?我可以做同样的事情而不像我现在那样对服务器施加压力吗?

根据我的评论:在任何非平凡大小的系统上,缩略图应该在后台生成,而不是在网络服务器进程中生成。切换到 cron 或作业队列,同时使用占位符缩略图。

尽管如此,还是值得找出触发 "Internal Server Error" 的原因 - 您可能需要打开错误日志以确保它被记录下来。