提问人:Madara's Ghost 提问时间:1/14/2014 更新时间:2/2/2014 访问量:368
通过PHP使用ImageMagick创建大型精灵 消耗100% CPU
Creating a large sprite with ImageMagick via PHP Consumes 100% CPU
问:
所以我有这个:
exec("cd $upload_directory && convert \\( +append -limit memory 1 -limit map 1 *.jpg \\) -strip -trim -interlace Plane -quality 60 output.jpg
工作流程如下:
- 用户上传 *.zip 文件,包含约 30 张图片,每张 2048x1152
- 应用程序解压缩 zip 文件
- 应用程序拍摄照片并从所有照片中制作一个大精灵
- 然后,应用程序重定向到其他页面进行处理。
现在的问题是制作大型精灵。它消耗 100% 的 CPU(根据服务器上),当图像较多时会失败。此外,过程输出没有任何进一步的错误消息。top
Killed
现在,我确信我可以通过在服务器上投入更多力量来解决这个问题,但我有一种感觉,我拥有的那个并不是最有效的。
我可以尝试什么来缓解该问题?
答:
1赞
Kovo
1/21/2014
#1
你有点回答了你自己的问题。你正在做一些非常密集的事情。预期的结果是 CPU 使用率将飙升。解压缩需要内存和 CPU。创建海量映像需要 IO、CPU 和内存。如果您曾经使用过 Photoshop,您会注意到您的系统内存和 CPU 总是飙升。处理图像并非易事。
如果要使用当前方法处理大型图像,则需要更强大的服务器。没有魔术参数可以使进程使用更少的内存。如果您有一张 32MB 的图像,那么在您尝试减小其大小之前,它将需要大量内存来读取它。
希望对您有所帮助!
评论
; echo $?
1