批量PHP图片上传速度慢,架构有变化吗?

时间:2012-11-27 22:04:37

标签: php jquery image-processing

我已经建立了一个带相册的CMS。非常简单,大多数东西是静态的,静态的HTML页面,没有数据库,只是(尽可能少)包含一些JSON内容的文本文件。 管理面板的Web界面全部采用基于PHP(Zend Framework)的后端的jQuery。尽可能在浏览器中完成,因此后端非常简单。 现在相册的工作原理如下:

  • 点击“媒体”链接
  • 从包含所有相册的对象的后端获取JSON字符串,并为每张相册提取所有照片
  • 使用所有相册呈现无序列表
  • 使用所有图片在每个相册列表项目中呈现无序列表

上传:

  • 将一个或多个jpeg / png文件拖放到浏览器中以创建新专辑
  • 将一个或多个jpeg / png文件放入相册,将这些文件附加到光标下的相册
  • 将所有已删除的文件(使用this jQuery拖放上传插件)发送到后端
  • 后端接收所有文件(显示一个不错的进度条)
  • 后端循环遍历所有上传的文件,而webinterface显示一个漂亮的微调器
  • 将每个文件的大小调整为指定的最大大小,并将缩略图显示为最大值133x133 px
  • 每个文件都附加到具有服务器端文件名和缩略图名称
  • 的数组中
  • [尚未实施:为相册概览和每张图片呈现(更新的)静态html页面]
  • 包含所有新上传文件的数组将转换为JSON并发送到客户端
  • Webinterface将所有新文件附加为列表项(显示缩略图)
  • 上传完成

这一切都很顺利,高达+ - 600张图片或+ - 900MB。如果用户想要一次上传更多文件,我可以这样做,好吧,分两个阶段完成。问题是,后端处理是一个婊子。将100多个图像转换为最佳尺寸(每个1.5MB)并生成缩略图正在逐渐变长。我是用PHP GD做的。没有花太多时间(或根本没有时间),发现那就是问题所在。我的猜测是,我无法在PHP中加快速度。

所以这里有几个问题:

  1. ImageMagick会更快吗?我不是粉丝,所以请不要,而且,我也不想在我的服务器上安装这个... ...
  2. 是否有一个真正的,非常轻量级的命令行程序,只需几个命令就可以完成相同的操作(我知道我并没有暗指ImageMagick)?
  3. 如果上一个问题的答案是否定的:最好的方法是什么?不要说Java,我也不是那么大的Java粉丝。一些C(-dialect)?最好是具有功能强大但轻量级的图像库,用于最近邻,双线性和双三次插值算法。
  4. 我的架构可以改变吗?此时,一旦插入缩略图,图像就开始出现在浏览器中,因此在接收到整个JSON阵列之后,导致整个动作必须完成并在浏览器中接收到任何类型的反馈之前生成所有图像数据。这意味着旋转器(没有任何指示过程将采取多长时间或完成了多少图像)将长时间显示。是否可以使用Javascripts FileReader从用户系统预加载图像,在浏览器中生成缩略图并在立即上传后显示它们?在后端:只接收文件,将它们写入磁盘,执行命令行命令,立即向浏览器发送响应并在后台进行转换?
  5. 如何防止AJAX请求的客户端中止事件?上传和转换时,当用户想要关闭页面或尝试更改#hash时,应显示警告。
  6. 感谢。希望你们能帮助我。大家都知道:客户端的代码很复杂。我宁愿改变后端。

0 个答案:

没有答案