可伸缩的异步图像调整大小


Scalable asynchronous image resizing

我正在考虑在PHP (CodeIgniter) Web应用程序中处理图像调整大小的最可伸缩方式的几个选项。我需要将图像调整为几个大小,然后将它们推送到Amazon S3。以下是我目前想到的选项:

  1. 文件上传后加入队列。有一个后台PHP或Python(显然PHP不适合长时间运行的进程)程序不断运行,查看和处理队列,然后休眠x秒。

  2. 当文件上传时,生成一个新的PHP进程,该进程处理该图像然后死亡。

  3. 使用第三方服务,如lightspun(他们目前不接受客户。还有其他类似的服务吗?)

也许有一个更好的选择我没有考虑过?

我会选择你的第一选择,因为它更可靠,并且意味着你可以在后端工作而不需要把前端拆掉。

它还可以更优雅地扩展,因为如果队列变得非常大,您可以将它移到另一个服务器上。

你的第一个想法听起来不错,原因已经说过了,可以减轻用户处理时间的负担,你可以添加更多的图像大小等,而不会损害用户体验。我使用命令行图像魔术工具进行图像处理获得了很好的结果,并且在长时间运行的进程中使用PHP使用它的fork功能也有一些运气。http://php.net/manual/en/function.pcntl-fork.php