哪个更快,imagemagick类或exec()

时间:2013-02-13 01:02:12

标签: php imagemagick imagick

我目前正在使用php exec()通过imagemagick生成图像,因为我无法使用imagick类,因为我得到了这个

Fatal error: Class 'Imagick' not found

作为解决方案,我使用exec(),但问题是,执行速度太慢。

我没有尝试使用imagick类,所以我不知道以这种方式生成比exec()更快。

问题是,哪个更好用,想象类或exec()?

更新: 这是我的phpinfo GD enter image description here

这是我有想象力的版本

Version: ImageMagick 6.0.7 08/25/10 Q16 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2004 ImageMagick Studio LLC

4 个答案:

答案 0 :(得分:1)

  

理想情况下,应该在您的服务器上禁用exec以确保安全性 - 如果它不是您的服务器......那么它仍然应该是: - )

我从未在我使用过的任何服务器上看到它被禁用;是否共享。

  

Safe_mode已从PHP中删除,并在启用时生成致命的E_CORE_ERROR级别错误。

无论如何它的马匹用于课程 - 在某些情况下,Imagick更快;在其他人GD更快,它取决于你想要做什么。但Imagemagick可能比IMagick慢。

几年前我做了一些速度测试并得到了一些有趣的结果:Results PDF他们现在可能会更新。

在较大的文件上GD挂起但可能有办法增加内存。如果你做的事情有点复杂,那么使用Imagick会更加混乱。

由于你没有说你在做什么,我无法提供更多信息。

答案 1 :(得分:0)

根据我的经验,它们在速度方面都具有可比性。最大的缺点是,当涉及到Imagick课程时缺乏选项和定制。也就是说,我通常会避免使用exec()来解决安全问题。

答案 2 :(得分:0)

使用Imagick类更快。

原因:Exec必须分叉一个新进程来加载转换可执行文件(或者你正在使用的imagemagick的任何工具)..所以通常第一次它必须去磁盘找到二进制文件..未来的尝试应该使用操作系统缓存来加载它,以便在速度上具有可比性

imagick类是一个编译成PHP的链接库,提供更好的性能,具体取决于系统中php的加载方式(CGI / fastcgi / extension)

正如另一张海报所说,想象类的选项较少 - 但根据我的经验,99%的情况下选项不是直接可用的,还有另一种方法可以做到。

编辑:理想情况下,应该在您的服务器上禁用exec以确保安全 - 如果它不是您的服务器..那么它仍然应该是: - )

答案 3 :(得分:0)

最好使用imagick类,因为exec是一个安全问题。但是,首先并不需要它。尝试使用built-in GD functions.