Apache-2.2

apc 僅適用於 apc.php

  • February 8, 2011

我在裝有 CentOS 5 的 VPS 上執行 PHP 5.3.4、Apache 2.0.63 和 APC 3.1.7。

當我打開 apc.php 並轉到系統記憶體條目選項卡時,它告訴我記憶體中的唯一文件是 apc.php。我已經訪問了同一目錄中的多個其他文件,但似乎它們沒有被記憶體。

我玩過apc_storeapc_fetch。我可以從同一個請求中儲存和獲取變數,但不能跨多個請求。

我在網上搜尋了所有內容,但沒有發現任何對我有幫助的東西。當有人聲稱 a 但是在 APC 3.1.6 中導致問題時,我以為我已經弄清楚了。我下載了 3.1.7 並從原始碼建構它……沒有改進。我仍然有同樣的問題。我已多次重新啟動 httpd 服務,但均未成功。

有什麼建議可以嘗試什麼,什麼可能是錯的?

你在使用 mod_fcgid 嗎?如果是這樣,不要。mod_fcgid 不支持 PHP 的子生成功能,因此如果有多個請求,它將生成一個新的 PHP,並且由 mod_fcgid 生成的每個 PHP 都將有自己的操作碼記憶體(如果您在 PHP 中啟用了它們,還有一堆無用的子包裝腳本)。

如果您使用的是 mod_fastcgi,那麼您需要檢查 mod_fastcgi 是否僅啟動了一個 PHP 程序,並且一個 PHP 程序正在啟動足夠多的子程序來處理您的負載。 這篇部落格文章是對整個事情的一個很好的概括,雖然它專門用於使用 suexec 並為每個使用者獲取單獨的 fastcgi 程序,但如果你想要的話,你需要調整它以獲得整個伺服器的一個 fastcgi 程序。

如果您使用的是 mod_php5,那麼它應該可以正常工作,因為 APC 記憶體是由 apache 創建的。

如果您在沒有 mod_fastcgi/fcgid 的情況下使用 CGI,那麼您的 PHP 執行檔會在每次請求後退出,並帶走其操作碼記憶體。

引用自:https://serverfault.com/questions/232857