【问题标题】:Does adding Memcached/APC require writing codes again?添加 Memcached/APC 是否需要再次编写代码?
【发布时间】:2011-08-06 22:04:11
【问题描述】:

我计划在我的 PHP 代码中添加 APC 或 MEMCACHED ! 我的问题是是否需要重写所有代码? 当我查看 PHP 手册时,我得到了这个!

function get_foo(foo_id)
 foo = memcached_get("foo:" . foo_id)
 return foo if defined foo

 foo = fetch_foo_from_database(foo_id)
 memcached_set("foo:" . foo_id, foo)
 return foo
end

所以,为了存储变量我需要做 memcached_set(...) 或者就像我添加插件并获得性能提升!

我对 APC / Memcache 不了解,欢迎讨论此问题

【问题讨论】:

    标签: php memcached apc memcachedb


    【解决方案1】:

    首先,仅安装 APC 即可获得性能提升。当一个脚本被执行时,它通过 Zend_Compile 运行,将你的 PHP 代码转换为 OPCODES,然后它通过 Zend_Execute 运行。每次页面加载时把PHP转成OPCODES的过程都是一样的,所以下次再做是浪费。 APC (Alternative PHP Cache) 将这些操作码保存在内存中,因此下次它可以跳过该步骤并加快页面加载速度。

    当涉及到脚本中的缓存时,您需要进行一些更改。您可以随着时间的推移逐步进行这些更改,每次都获得更高的性能,因此您无需担心一次完成所有操作。如果你有一个服务器,我会使用 APC,如果你将来可能有多个服务器,我会使用 Memcache。

    提高性能的唾手可得的成果:

    • 查找经常加载的内容,例如您的主页。用一个额外的函数重写那个控制器,检查缓存中是否有数据,如果可用就使用它。如果没有,请以旧方式加载它,并将其存储在缓存中。请记住,您可以将数组和对象放在这两种数据存储中,因此应该很快。
    • 查看执行时间较长的数据库查询,并将它们缓存起来。
    • 寻找其他计算成本高的东西来缓存,这些在很大程度上取决于您的特定应用程序。

    【讨论】:

      【解决方案2】:

      使用 APC,您首先会获得一个操作码缓存——对于这部分,您无需在代码中进行任何修改:只需安装扩展程序并启用它。

      操作码缓存通常会加快速度:它通过将操作码(PHP 文件的编译结果)保存在内存中来防止 PHP 脚本一次又一次地编译。


      然后,APC 和 memcached 允许将数据存储在内存中;通常,这用于缓存长时间/昂贵操作的结果(如复杂的 SQL 查询、Web 服务调用......)

      关于这一点,没有什么神奇的:您将不得不编写一些代码,将数据存储到缓存中,然后从中获取数据——如果数据不在缓存中,则执行耗时/昂贵的操作,或者缓存已过期。


      这里有几个问题/答案可能会为您提供一些额外的信息:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-09
        • 2023-04-01
        • 2018-07-05
        • 1970-01-01
        • 2021-12-01
        相关资源
        最近更新 更多