使用php的网络文件系统上的图像/视频/ mp3

时间:2011-04-16 01:02:49

标签: php ubuntu-10.04

我做了一些谷歌搜索,似乎找不到我想要的东西。我正在设计我的网站以使用MYSQL,PHP Web服务器。到目前为止,计划使用带有负载平衡器的多个Web服务器和用于扩展的MySql Custer。但后来我得到图像/视频/ mp3。我需要一个文件系统,多个服务器可以从中读取文件并将文件写入。因此,一个Web服务器可以运行MySQL,网络文件系统和Web服务器,但随着站点的扩展,站点可以切换到多个服务器。有没有人有任何示例,教程或资源来帮助我?该站点在Ubuntu服务器上运行。我最初的想法是将图像存储在MySQL中(我知道如何做到并有工作示例)所以所有服务器都可以读/写,但其他人告诉我这是一个坏主意,我应该使用文件系统(但不要我想使用本地的,因为我认为它不适合大型网站。)

2 个答案:

答案 0 :(得分:1)

有三种系统可供考虑 - MogilefsMongodb GridFS和基于云的存储解决方案。

MogileFS(OMG Files!)是为Livejournal开发的,并在Mysql中存储元数据。它使用它来查找具有相应文件的实际磁盘并将其流出。

MongoDB GridFS更新,可能更容易上手,当然对于较小的系统。它使用一个新的'NoSql'数据库在其数据库中存储部分文件,并根据需要进行组装。搜索信息会发现大量信息。

最后,您可以简单地避免整个问题,只需将图片上传到Amazon's S3Rackspace Cloudfiles即可。之前我已经完成了后者(虽然该站点已经在Rackspace的系统中运行)并且它并不是很困难,再次提供大量示例。

对于S3,还有一个命令行工具s3cmd可以设置为同步(或更好)上传,然后将一个充满文件的目录删除到S3'桶'。

答案 1 :(得分:0)

由于最大尺寸限制

,首先不能使用MySQL存储图像/大文件

引用此答案Choosing data type for MySQL?

  

MySQL无法处理大小超过max_allowed_pa​​cket(默认值:1M)的任何数据,除非您在服务器端构造复杂且内存密集的变通方法。这进一步限制了类似TEXT / BLOB的类型可以做什么,并且通常使LARGETEXT / LARGEBLOB类型在默认配置中无用。

现在,为了存储和升级兼容性,为什么不将它们存储在NAS或Raid系统上,您可以继续将驱动器固定到驱动器上。然后在您的数据库中只存储文件的路径。数据库密集程度很高,并且具有良好的可扩展性。