如何实现大量的高性能批量图像转换?

How to realize a performant batch image convert for huge quantity?

我现在正在使用使用 LFTP 的 Cronjob(PHP CLI)在晚上将一些文件从服务器 A 同步到服务器 B,并将其日志写入特殊的 mysql table。我同步的图片是tiff文件。

我正在使用 ImageMagick 将这些图片转换成一些带有一些附加功能的预览 png 图片(加水印、调整大小、剪切路径和嵌入颜色配置文件)
完整命令 here.


那么 "best" 如何以最佳方式转换超过 100 张(有时有 10 张 - 有时有 250 多张)图像?

我的脚本应该是安全的 - 所以每个 tiff 文件总是有网络预览。所以我正在检查所有图像,如果每个图像都有其预览 png - 如果没有 - 生成它们!

我不想用代码重载这个 post 所以这里是 gist

该脚本将 运行 与带有 php-fcgi 的简单 cron 一样。

这个脚本现在非常"slow"。一个 ImageMagick 命令大约需要 1-2 秒 - 有时超过 15 秒(大文件,复杂路径)。 - 任何 shell_exec 在完成命令时保留脚本。

有什么方法可以提高效率吗?

注意:我无法在服务器上安装额外的软件。

如果您不需要立即使用图像,那么您可以将图像转换放入一个队列中(类似于 Beanstalk),并让其处理耗时且密集的操作。