2011-04-06 35 views
0

由於某些原因,我的類未正確加載。他們要麼加載失敗,要麼加載類的錯誤版本(從錯誤的目錄中獲取)。PHP APC:使用前一個請求的includepath而不是當前的

經過一些調試後,很明顯所使用的包含路徑實際上是前一個請求的包含路徑。

但是,當我運行get_include_path()記錄的結果是正確的,但從行爲中可以清楚的看到,實際上它沒有被使用,而是使用前一個請求的路徑。

我的代碼是PHP和Yii框架。該框架在運行時操作includepath

PHP版本是5.31,XAMPP,Windows7的

編輯:禁用APC解決了這個問題

+0

那麼,爲什麼你的應用程序中有相同類的不同版本? – Wes 2011-04-06 04:02:48

+0

由於一些很好的原因,這與當前版本的主題 – shealtiel 2011-04-06 04:08:15

+1

沒有真正的關聯。重新啓動apache。當APC運行時間過長時,我看到過類似的問題。增加緩存大小可能會有所幫助。 – 2011-04-06 17:07:47

回答

1

我很經常看到這一點APC。大多數時候,當APC填滿時。

在瀏覽器中運行apc.php腳本(包含在大多數APC安裝中)來檢查您的使用情況。輸出看起來像這樣: apc ouptput

如果APC已滿,增加分配給它的內存量。在你的PHP配置中,有一個配置選項控制着這個:apc.shm_size=64。這分配了64兆內存。增加它直到你有一些喘息的空間。您需要重新啓動Apache才能使此更改生效。

如果您每次都將應用程序部署到磁盤上的其他路徑,則應該清除APC,否則舊緩存條目會持續存在。最簡單的方法是平穩地重新啓動Web服務器。請注意,在活動的生產服務器上,這會中斷一秒左右的活動請求。

+0

我的發行版(xampp)似乎沒有這樣的文件。我能否通過其他方式獲得這些信息(例如命令行)? – shealtiel 2011-04-06 20:10:39

+0

假設我放大了,總有一天它不會填滿嗎?這是一個正確的處理全緩存情況? – shealtiel 2011-04-06 20:11:29

+0

apc.php真的會成爲調查APC利用率的最佳方式。請注意,PHP CLI無法爲您提供有關您的apache實例中發生了什麼的信息,因爲它是一個單獨的可執行文件 - 它無法訪問mod_php的共享內存。如果你有1套穩定的緩存文件,它將最終緩存它們並停止增長,或者2)你定期清除它的緩存[每n次部署],APC將不會滿足。 – 2011-04-06 20:16:31

相關問題