2010-02-19 32 views

回答

4

See this please :)

Memcached是一個分佈式緩存 系統,而APC是非分佈式 - 和主要的操作碼緩存。

如果(且僅當)你有一個Web應用程序 其中有住在 不同的網絡服務器(負載平衡), 你必須使用內存緩存爲 分佈式緩存。如果不是,只需 堅持APC和它的緩存。

你應該總是使用操作碼緩存, 這是APC(APC也將獲得 融入PHP6 IIRC,那麼爲什麼不 現在開始使用它)。

您可以/應該將兩者用於不同的 目的。

+0

但apc是如此的越野車,我幾乎不能容忍.. – user198729

+0

@ user198729:那麼你應該去memecache :)順便說一下,有大的應用程序已經使用apc。 – Sarfraz

+0

@ user198729你能記下你的評論嗎?因爲幾乎所有的PHP服務器都使用APC作爲操作碼緩存系統而沒有問題。 (是的,我知道你在2010年二月份發佈了這篇文章,但我很長一段時間都在使用它)。 – Shadok

8

APC和memcached的是不一樣的東西:


所有的最前一頁,APC有兩個作用:

  • 這是一個操作碼緩存(這意味着每個PHP頁面通常需要更少的CPU,因爲它刪除了「編譯」部分;當我們第一次啓用APC作爲操作碼緩存時,我們網絡服務器上的CPU負載從80%變成了類似於40-50%的東西)
  • 這也是一個非分佈式數據緩存
    • 這意味着,如果你有幾臺服務器,您的服務器的每一個具有緩存
    • 這也意味着有一個相當低的限度上的本地副本數據量可以在高速緩存


而memcached的存儲:

  • 這只是一個數據高速緩存
  • 它分佈式
    • 即分佈式緩存羣集上的服務器的數量沒有限制
    • 即高速緩存的數量上沒有限制,你可以有


您可以使用APC或memcached的,或兩者兼而有之,作爲數據緩存(這就是我們正在做的項目我目前正在處理:一些數據緩存在APC中,另一些則使用memcached)。但是,如果您想要一些操作碼緩存,則必須使用APC (或eAccelerator;但不確定它是否維護得很好)

+0

PHP和apc分別是什麼版本? – user198729

+0

幾乎是PHP 5.2 *的最後一個「穩定」版本(即類似於5.2.9或5.2.10)*和最後一個「穩定」版本的APC *(即3.0.19)* –

+0

我聽說apc是穩定的PHP5.2,但我已經使用PHP5.3,並且apc版本是3.1.3.0,這似乎是buggy – user198729