【问题标题】:PHP SQL-Cache with serialize, optimization?具有序列化、优化功能的 PHP SQL-Cache?
【发布时间】:2012-03-26 15:21:26
【问题描述】:

我有一个数据库和一个包含大约 200 mb 数据的表。 (产品描述和很多价值) 我需要这些值来显示一些详细信息页面。所以我打算使用一个小的缓存系统来加快速度。我认为序列化是使用 php 的更好方法。

现在我想知道如何最好地保存我的数据,以获得最佳速度。 每个产品作为一个文件,一个包含所有产品或块的文件(假设每个文件 100 个产品)?

我想将信息存储在这样的对象中,序列化并保存:

class saveObj
{
$sql = "SELECT * FROM products LIMIT 0,100"
$time;
$data;    
};

文件名:sql_products_0_100.data

我的计划会有效吗?或者有人知道优化的方法吗?

(我会每天创建一次所有数据文件)

【问题讨论】:

    标签: php caching optimization


    【解决方案1】:

    如果不编写一些测试代码并进行一些分析,这很难说。

    如果您在每个文件路径中查看 100 个产品,那么这 100 个产品是否都将用于生成页面?

    每个产品有 1 个文件意味着如果您需要每页大约 100 个文件的数据,磁盘将需要大量查找。

    每个文件有 100 个产品意味着如果您的页面只需要 1 个产品,那么它需要读取所有数据,然后搜索要提取的相应产品。

    我的建议是调查 APC。缓存存储在内存中,因此访问速度非常快,每个密钥可以存储 1 个产品,这应该会简化检索和存储。

    如果负载增加并且您正在跨多个服务器进行负载平衡,那么您可以查看 memcached,它是一个分布式内存缓存系统。

    【讨论】:

    • 我考虑过 Memcached,但 memcached 似乎与购物软件 (prestashop) 有问题。使用文件我还可以使用一些 python 脚本更改数据。产品数据必须每天“更新”一次,所有要抓取的产品页面(谷歌商家、其他搜索网站)也必须如此。
    • 对于memcached,如果值存储在内存中,如果存储的值太多,会不会造成一些问题?
    • 不,memcached 可以。例如,如果您可能有一台具有 8Gb 内存的服务器。然后,您可以分配 7Gb 给 memcache 用于存储对象。这应该非常适合您的目的。如果这还不够,您可以向池中添加更多机器。但是,如果您只运行 1 台服务器,请查看 APC,因为它非常适合单台服务器缓存。
    • 好吧,我会尝试所有 3 种方法,文件缓存、memcached 和 apc。我会看看哪种方法最适合我的目的,然后再决定。我的服务器上现在只有 4 GB 的实际内存,但如果需要,我可以升级。
    • 太好了 :) 分析应该能够告诉您什么最适合您的目的。不过,您可能会发现缓存到内存可能是读写速度最快的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多