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

标签 php linux cron command-line-interface batch-processing

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

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

<小时/>

那么以最佳方式转换 100 多个(有时有 10 个 - 有时有 250 个以上)图像的“最佳”方法是怎样的?

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

我不会在这篇文章中添加过多的代码,所以这里有一个 gist

该脚本将使用 php-fcgi 作为简单的 cron 运行。

这个脚本现在非常“慢”。一个 ImageMagick 命令大约需要 1-2 秒 - 有时超过 15 秒(大文件、复杂路径)。 - 任何 shell_exec 在完成命令时都会保存脚本。

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

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

最佳答案

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

关于php - 如何实现大批量的高性能批量图像转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29234992/

相关文章:

c++ - XGrabKeyboard 仅在程序运行时阻止键盘

等效的 CryptProtectMemory 的 Linux

java - Deltaspike 和 quartz : How to set cronExpressions from a config file

ruby-on-rails - rails : Testing Cron Jobs in development environment

php - 如何在 Laravel 中检索 FormData

javascript - 我在所有工具提示中得到与我的第一个 id 相同的文本,即使它不属于该 id

Linux 64 位 BAR 编程

service - Systemd - 如果服务停止超过 X 次,则始终运行服务并重新启动

php - 如何在mysql中检索二进制文件数据作为转换后的字符?

php - 在 PHP/MySQL 注销表单中围绕 session 变量包装函数