我正在创建一个Web服务,通常从远程网页中提取数据。在获取这些数据之后,我有一个简单的多维信息数组可供使用。在我的服务器上拼音过程相当重要,页面加载需要一段时间。我正在考虑使用MySQL数据库添加一个简单的缓存系统,其中我为每个远程网页创建一行,并从其中存储的信息数组以JSON编码的字符串形式存储。这是一个足够好的系统吗?或者像每个网页的文本文件是一个更好的主意?在MySQL数据库中创建一个PHP缓存系统?
回答
既然你刮多个网页,并且你想你的数据将被永久缓存,你有几种选择 - 最好的这将是使用memcache或数据库,如MySQL。使用文本文件不是一个好主意,因为您必须序列化/反序列化数据,并从文件系统读取数据。查询数据库或memcache的效率要高出许多倍。
既然你可能正在寻找你的缓存有点持久,我会建议去与MySQL。您只需创建一个具有自动递增主键的表,该分析的JSON对象中的每个元素都有一列。 (请注意,MySQL目前不支持数组,为了模拟它们,您需要使用关系表,或者序列化数组数据并将其提供给文本字段,前者是首选)。
每次抓取页面时,都会运行UPDATE
语句来更新数据库中单个页面的信息。如果您指定唯一索引来标识您的页面(URL /等),您将获得最佳查找性能。
数据持久性是为什么我跳过了memcache或类似的东西。关于查询缓存页面的问题是:可以简单地查询页面的URL,还是应该执行类似于URL的md5散列查询操作? – 2010-05-28 02:09:17
使用页面的URL进行查询就可以了(因为通常可以用作唯一标识符)。只要确保在数据库表中的该字段上添加一个唯一索引,因为它本质上可以用作主键。 – Kenaniah 2010-05-28 06:32:22
我不倾向于有特别大的APC配置,最大64 - 128MB。 Memcache可以达到几千兆字节或更多(如果运行多个实例,则会更多)。两者都是暂时的 - 重启Apache或Memcache(后者的可能性较小或经常会稍微减少)将丢失数据
这取决于您希望多长时间处理数据以生成缓存,以及该缓存可能需要多长时间才能有用。如果在重新抓取页面之前好几个星期--MySQL是一个完全合适的后台存储。
潜在的pther选项,取决于缓存的项数&数据的大小,正如您所建议的那样,是基于文件的缓存,SQlite或其他系统。
- 1. 如何用PHP和Mysql创建动态缓存系统?
- 2. Eclipselink缓存问题(一个数据库用于两个系统)
- 3. 装入系统间缓存数据库
- 4. 在另一个系统上重新创建数据库模式?
- 5. 在JavaScript中创建一个简单的库存系统
- 6. 创建多个数据库到一个系统
- 7. MySQL操作系统缓存
- 8. 创建一个PHP结帐系统
- 9. 在java中为xpages构建一个缓存查找系统
- 10. 如何创建一个MySQL数据库
- 11. 创建折扣代码系统(MySQL/php)
- 12. PHP,MYSQL创建博客评论系统
- 13. 我在wordpress数据库中创建了一个新表(分页系统)
- 14. 创建一个数据对象关系系统
- 15. 使用PHP从MySQL数据库创建一个XML文件
- 16. PHP从mySQL数据库动态创建一个自定义PDF
- 17. Rails:如何缓存系统表数据
- 18. 在MySQL数据库中缓存/存储twitter API数据
- 19. 我想创建一个+分数系统
- 20. Drupal 7 - 创建整个系统备份数据库和文件系统
- 21. 寻找一个DB缓存系统CodeIgnitor它通过数据库表
- 22. 在数据库中创建一个表
- 23. 在php中创建折扣系统
- 24. 创建SQL Server 2008中的一个文件夹,如“系统数据库”
- 25. C库存系统数据库#
- 26. 如何安全地在C中创建一个MySQL数据库#
- 27. 在MySQL数据库中创建一个CCK记录
- 28. 如何在php和mysql中创建定时奖励系统
- 29. PHP和MySQL在数据库中存储
- 30. 在MySQL/PHP中查找和存储数据库关系
@Kenaniah - 如果你必须以“没有冒犯性”作为前言 - 也许你应该学会如何建设性地提供建议。这个孩子是17. – Matt 2010-05-27 22:20:48
@Matt - 是的,我会在一秒内发布一个建设性的答案... – Kenaniah 2010-05-27 22:27:28