僅在某些站點上啟用 APC 使用者記憶體 (Apache)
首先,我們暫時對文件記憶體根本不感興趣,重要的是使用者記憶體。
對於我們正在開發的某些應用程序,我們需要將有關數據庫結構和查詢結果的資訊儲存在記憶體中。
我們的伺服器上有幾十個站點,其中一些由具有 ftp 訪問權限的客戶控制。
我擔心虛擬主機(我們不控制 php 文件的主機)與另一台虛擬主機的記憶體發生衝突。我們可以對我們的應用程序進行編碼,這樣它們的記憶體鍵就不會發生衝突,但我們不能保證客戶不會清除或修改我們的記憶體值。
我們在帶有 plesk 的 CentOS 5.3 伺服器上有 mod_php。我們擁有
apc.cache_by_default=0
並且apc.filters="-/.*"
因為它的開啟似乎破壞了我們已安裝的許多第三方應用程序。我已經在虛擬主機中嘗試過
php_admin_flag apc.enabled off
,php_admin_value apc.enabled 0
但它似乎沒有效果。有什麼方法可以完全禁用某些站點的 apc 嗎?
或者,有沒有辦法讓每個虛擬主機有一個單獨的使用者記憶體?還是不同的記憶體解決方案?我們正在考慮使用 memcached,但我擔心它會有類似的問題。
謝謝。
這種用法需要 memcache。去獲取 memcache,閱讀http://memcached.org上的文件。
APC 和 mod_php 的問題在於 mod_php 與 apache 在同一個程序中。這意味著您只需為所有虛擬主機配置一種 PHP 配置。
嘗試查看 PHP 的 FastCGI 介面。不幸的是,我在 apache 上設置它(我們使用 nginx)方面沒有很多經驗,但我們已經很好地使用它來分離共享託管伺服器上不同站點的配置。單獨的配置意味著將所有內容分開:您可以為不同的站點啟用不同的 PHP 模組,為不同的站點設置不同的會話儲存,為不同的站點設置不同的上傳限制等。基本上,歸結為擁有一個單獨的 PHP-FCGI 伺服器(至少)每個客戶。每個 FCGI 伺服器都有自己的配置;我們使用
/srv/$domain/fcgi/php.ini
,但無論對您和 Plesk 有用。CGI 也可以工作;我不是 100% 了解 APC 是如何進行記憶體的。如果它在記憶體中,那麼 CGI 將無濟於事,因為它會為每個請求創建一個新程序,這意味著每個請求都會失去任何記憶體記憶體。需要明確的是,即使它確實有效,也不建議這樣做,但它更容易設置用於測試。