php/mysql 生成 imagemagick 图像的查询 - 不好的做法?

php/mysql query to generate imagemagick image - bad practice?

我的情况相对简单:我想生成一个图像(从现有的原始图像),其裁剪数据是从 mysql 数据库中检索的(它将动态创建图像; 我可能稍后将它保存到服务器,具体取决于生成的图像大小的数量),我希望 mysql 查询和 imagick (imagemagick) 在同一个 php 脚本中。

我的问题是:这是一种不好的做法吗?我在服务器负载(等)方面不是那么 'pro',并且想知道在同一个脚本中 mysql 查询和 imagemagick 图像生成是否太慢或负载密集。

提前感谢您的任何见解。

图像处理 CPU 和 RAM 密集型。您当然可以按照您提到的方式使用图像处理,但如果您的流量增长很快,您将需要能够轻松添加 web/PHP 服务器以使您的系统扩展。

要使这项工作顺利进行,您应该打开 MySQL 连接,执行查询,然后关闭连接,然后进行图像处理。这样一来,您的 MySQL 连接池就不会被在进程处理图像时闲置的连接填满。

编辑 保留已生成图像的缓存是一个好主意。如果我是你,我会将其构建为正式缓存。当缓存变满时,明智的做法是删除缓存中最近最少 引用的 元素,而不是最近最少 生成的 元素。这样就不需要重新生成您经常使用的图像。

裁剪图像的过程在 CPU 中并不昂贵;要做到这一点,ImageMagick 必须解压缩图像,裁剪它,然后重新压缩它。您的大部分计算成本将出现在 decompress/recompress 操作中(裁剪非常便宜)。 RAM 成本将与图像的大小成正比。 ImageMagick 可以从源代码编译以利用多核 CPU。您需要对此进行试验以确保其有效。

我提出关于添加服务器的观点是因为如果您将系统设计为预先执行此操作会更容易。