php - 在MySQL数据库中创建PHP缓存系统?

标签 php mysql performance caching

我正在创建一个经常从远程网页抓取数据的网络服务。抓取这些数据后,我有一个简单的多维信息数组可供使用。抓取过程对我的服务器来说相当繁重,并且页面加载需要一段时间。我正在考虑使用 MySQL 数据库添加一个简单的缓存系统,在该系统中,我为每个远程网页创建一行,并将从中提取的信息数组存储为 JSON 编码字符串。这是一个足够好的系统吗?或者每个网页一个文本文件之类的东西会更好吗?

最佳答案

由于您要抓取多个网页,并且希望持久缓存数据,因此您有几种选择 - 其中最好的选择是使用 memcache 或 MySQL 等数据库。使用文本文件不是一个好主意,因为您必须序列化/反序列化数据,并从文件系统中读取。查询数据库或内存缓存的效率要高很多倍。

由于您可能希望缓存具有一定的持久性,因此我建议使用 MySQL。您只需创建一个具有自动递增主键的表,该主键是解析的 JSON 对象中每个元素的一列。 (请注意,MySQL 目前不支持数组。为了模拟它们,您需要使用关系表,或者序列化数组数据并将其提供给文本字段。首选前一种方法)。

每次抓取页面时,您都会运行 UPDATE 语句来更新数据库中该单个页面的信息。如果您对用于唯一标识页面(URL/等)的任何内容指定唯一索引,您将获得最佳的查找性能。

关于php - 在MySQL数据库中创建PHP缓存系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2925380/

相关文章:

javascript - JavaScript 引擎会优化闭包中定义的常量吗?

java - 在哪里运行复杂的算法?服务器端还是客户端?

php - 关于使用类的类的开始 OOP 问题

php - 在表单输入中回显 php 作为带有路径的按钮

mysql - 选择相同城市的用户

python - 从 Jupyter Notebook 连接到 MySQL 数据库

javascript - 在选择过滤器更改时自动提交 AJAX 搜索表单

php - 单击后禁用提交按钮并保持 POST/REDIRECT/GET 工作

mysql - 使用条件计数过滤 GROUP BY 中的查询结果

java - Struts2性能问题