我正在考虑在PHP(CodeIgniter)Web App中处理图像大小调整的最具扩展性的方法。我需要将图像调整为多种尺寸,然后将它们推送到Amazon S3。所以这是我到目前为止提出的选项:
上传文件时,将其添加到队列中。有一个后台PHP或Python(显然PHP不适合长时间运行的进程)程序不断运行,查看并处理队列然后休眠x秒。
当上传文件时,会生成一个处理该图像然后死掉的新PHP进程。
使用第三方服务,例如lightspun(他们目前不接受客户。还有其他类似的服务吗?)
也许我没有考虑过更好的选择?
答案 0 :(得分:3)
我会选择你的第一选择,因为它会更可靠,意味着你可以在后端工作而不需要将前端放下。
它也可以更加优雅地扩展,因为如果队列变得极端,你可以将它移到另一台服务器上。
答案 1 :(得分:1)
你的第一个想法听起来很好,原因已经说明了,减轻了用户处理时间的负担,你可以在不损害用户体验的情况下添加更多的图像大小等。我使用命令行图像magick工具进行图像处理并获得了良好的效果。在使用fork abilty的长时间运行的进程中使用php有一些运气。 http://php.net/manual/en/function.pcntl-fork.php