Home >Backend Development >PHP Tutorial >请教图片服务器的问题

请教图片服务器的问题

WBOY
WBOYOriginal
2016-06-06 20:50:06947browse

目前正在做一个商城系统,现在做到商品这一模块,根据需求图片需要单独存放 > 1台服务器中, 纠结的问题是在商品详情这个字段中,详情介绍是图文混排,不像是首页、幻灯、广告可以单独存放在一个图片表中使得在前端取出图片时可以自由定义访问图片的根域名, 例如数据库中存放的图片src是 images/2013/3/2/uuid.jpg , 前端取出来的路径是 $config['image_url'][0].$image['src']类似这样的形式.. 但是商品详情里不同,图文混排的,除非在商品详情中用某个标识来代替图片,然后在取出详情和图片地址的时候用真实的图片src替换,除此之外我想不到有其它办法.. 目前接触过Linux,但是对于一些负载均衡、反向代理的应用不熟悉.. 总而言之:

有什么办法,可以在尽量不修改程序代码的情况下,可以做到图片轮询,例如linux中的某些功能例如文件同步等,还有重要的一点,在上传图片时,是直接上传给web server处理后还是上传时就直接传给其它的图片服务器?小白对于这点很不解,求大神指点。。

回复内容:

目前正在做一个商城系统,现在做到商品这一模块,根据需求图片需要单独存放 > 1台服务器中, 纠结的问题是在商品详情这个字段中,详情介绍是图文混排,不像是首页、幻灯、广告可以单独存放在一个图片表中使得在前端取出图片时可以自由定义访问图片的根域名, 例如数据库中存放的图片src是 images/2013/3/2/uuid.jpg , 前端取出来的路径是 $config['image_url'][0].$image['src']类似这样的形式.. 但是商品详情里不同,图文混排的,除非在商品详情中用某个标识来代替图片,然后在取出详情和图片地址的时候用真实的图片src替换,除此之外我想不到有其它办法.. 目前接触过Linux,但是对于一些负载均衡、反向代理的应用不熟悉.. 总而言之:

有什么办法,可以在尽量不修改程序代码的情况下,可以做到图片轮询,例如linux中的某些功能例如文件同步等,还有重要的一点,在上传图片时,是直接上传给web server处理后还是上传时就直接传给其它的图片服务器?小白对于这点很不解,求大神指点。。

其实楼上已经说得挺明白了,我做一下补充吧。

首先,所谓的图片服务器,其实也就是一个用于存放静态文件的地方,也就是说,能够用http 访问得到的服务器我们都可以称之为图片服务器。

现在我们只需要把把图片看做成一种资源存放到一个能用http(apache, nignx)的服务器即可。

要完成这点,实际上我们只需要把图片存放到一个目录,然后,这个目录与相应的http 服务器目录进行映射,或者就直接存在http 服务的相应目录下。

以上,一个所谓的图片服务器的基础概念就完成了。

于是,我们就能通过http 访问的直接访问到图片,接着,我们可以这样设计我们的api。

就是把图片的相对路径存进数据库

我们可以直接把图片的相对路径例如 '/images/shop/xxxx.jpg' 诸如此类路径存进数据库,接着,前端获取api 的时候,我们只需要组合这样的url 返回给他例如:图片服务器的地址是http://host:port,组成一个这样的http://host:port/images/shop/xxx.jpg.给前端就行。这样的好处就是把图片做成一种资源,通过http 访问,无论你怎么折腾服务器,只要改一下host 前端就可以获得对应的图片。与是不是图文混排不混排毫无关系,因为图片都统一上传到一个地方进行管理。

同步图片到其他服务器,然后DNS轮询

你管他是图文混排还是首页幻灯、广告。 流程如下: 1. 图片上传到图片服务器上(通过API,或者webservice 等等方法), 返回图片存储路径。

  1. 产品后台上传,得到这个图片地址。

不需要在乎是不是图文混排吧。

如果你想可以横向扩展,并且均衡负载,支持冗余,图片服务器集群 建议你去看看fastdfs 这个非常赞,适合图片存储(或小文件存储)

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn