繁体   English   中英

PHP Bug跟踪器:存储附件

[英]PHP bug tracker: storing attached files

给定一个带有SQL DB(MySQL,PostgreSQL,Oracle ...)的PHP错误跟踪器项目,该项目应该能够存储每个错误的附件文件。

您基本上如何将信息(文件信息和文件本身)存储在数据库和磁盘上?

例如

  • DB:表错误将有一个相关的表bug_files ,其中包含一个bug_id字段,以及一个文件名字段,其中包含磁盘上文件的路径
  • 磁盘:以高效的方式存储文件(避免在一个单一的目录有太多的文件),例如自动创建目录1-1000,1001-2000等,所以我们可以有/1001-2000/1234/bugfile.jpg或随机/z/e/x/q/1000_bugfile.jpg之类的子目录?

...或者有没有更有效的方法?

谢谢。

编辑

它还取决于您如何获取这些文件,您是否使用获取所有错误并为您创建链接的后端网页? 还是在发生错误后收到电子邮件,并且必须手动查找? 我认为这种选择没有太大意义。

文件将通过错误跟踪Web应用程序列出/上传/下载(=> HTTP上传/下载)。

除了开发人员/系统管理员之外,没有人能够查看自动生成的目录结构(但是,拥有“清晰的”结构会更方便)。

我会让文件系统完成其工作(文件存储)。 数据库可以用于文件存储,但是(通常)效率不高,例如,文件数据可以放在数据库缓冲区中-这本身还不错,但是它可能会占用其他表,行数据并减少资源其他查询的性能。

根据日期和项目名称等的有意义的组合创建目录将有助于减少在同一目录中有许多文件时的性能损失。

我强烈建议使用可识别的目录结构,甚至可能基于日期或与错误文件名的(部分)匹配的内容。 Fe'20110506-bugfile'将在/ 2011/05/06 /中也许有点匹配,仅2011/05 /就足够了。

它还取决于您如何获取这些文件,您是否使用获取所有错误并为您创建链接的后端网页? 还是在发生错误后收到电子邮件,并且必须手动查找? 我认为这个选择没有太大意义。

一个稍微不同的选项是在表错误(http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx)中将文件添加到数据库中,那么您不必创建目录结构BUT,这当然不允许您使用FTP来查找文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM