可扩展的异步图像缩放
我在考虑几种处理图像大小调整的方式,想找到最适合在PHP(CodeIgniter)网页应用中使用的方案。我需要把一张图片调整成几种不同的尺寸,然后把这些图片上传到亚马逊的S3存储。以下是我目前想到的几种方法:
当文件上传时,把它放到一个队列里。然后让一个后台的PHP或Python程序(听说PHP不太适合长时间运行的任务)一直在运行,查看并处理这个队列,处理完后再休息x秒。
当文件上传时,启动一个新的PHP进程来处理这张图片,处理完成后就结束这个进程。
使用像lightspun这样的第三方服务(不过他们现在不接收新客户。还有其他类似的服务吗?)
也许还有我没考虑到的更好的选择?
2 个回答
1
你最初的想法听起来不错,原因已经说过了,这样可以减轻用户的处理时间负担,而且你可以添加更多的图片尺寸等,而不会影响用户体验。我在使用命令行的ImageMagick工具进行图片处理时得到了很好的效果,并且在使用PHP进行长时间运行的进程时,也有过一些成功的经验,特别是利用它的分叉能力。http://php.net/manual/en/function.pcntl-fork.php
3
我建议你选择第一个选项,因为这样更可靠,而且你可以在后台进行工作,而不会影响到前台的运行。
这样做也更容易扩展,如果排队的请求变得很多,你可以把它转移到另一台服务器上去处理。