我想查看博客帖子中是否有特定外来词的出现,然后将这些词链接到声音文件以便播放。
我有一个2500字的XML文件,我有声音文件,我想知道存储和遍历此列表的最佳方法是什么?该列表不太可能改变,并且当完整查看时,该功能将在每篇博文上运行(不是在存档页面上显示摘录等)。
XML文件是350KB,我使用simplexml_load_file将其加载到PHP中。我认为这有点大,所以我把它转换成一个PHP文件,其中包含一个索引(字符串)单词的数组,这使文件大小降低到大约60KB。
我是否应该过多担心文件大小,或者更多关于搜索数据需要多长时间?有没有更好的方法来做到这一点,还是在数据库中最好?任何帮助,将不胜感激!
答案 0 :(得分:3)
如果您发现在合理的时间内针对博客帖子解析和匹配XML文件,则无需进行优化。当您发现任何重大负面影响时进行优化。
最简单的方法可能是简单地缓存已处理的页面。每当博客文章或单词列表发生变化时,缓存都会失效,因此下次调用它时会重新处理。
答案 1 :(得分:0)
将您的文件转换为PHP数组非常棒(除非您编写自己的扩展,否则不能比性能更好)。输入文件不仅更小,而且还处理了相当大的CPU(与其他操作相关)XML解析步骤。
可能会引发异议,因为数组会强制您立即读取所有数据,但权重为60K则没问题。
至于搜索数据,由于PHP数组是关联的,因此它们在这种情况下提供了相当好的性能。
总的来说,我说你的方法是正确的。
答案 2 :(得分:0)
基于存储在文件中的单词数组进行索引比在XML中搜索更耗时。
答案 3 :(得分:0)
毫无疑问,最可扩展的解决方案是使用数据库。这可以处理大量数据而不会显着降低性能,因此如果将来有更多数据,添加它将是微不足道的。在这种情况下,您可以使用sqlite
,这在安装和配置方面要求相当少,而且速度相当快。
使用PHP数组(大概使用include
/ require
)的解决方案是一个相当不错的解决方案,我不会过于担心更改它。但是,丢失XML文件是完全正确的。这将是过度劳动密集型和缓慢的。