2012-07-28 63 views
6

I have had this problem before on WAMP Server and PHP 5.3,現在在Linux上面向PHP 5.4。APC沒有加速PHP 5.4

基本上,APC啓用或禁用在性能上沒有任何區別,儘管apc.php中的統計數據表示。

下面是一個簡單的測試腳本,其中包括30個多名主義PHP文件,有時它:

$t = microtime(true); 
include 'Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php'; 
printf('%.3f s', microtime(true)-$t); 
  • 在Windows(Zend Server CE中,PHP 5.4)結果:0.001 s
  • 結果在Linux(PHP 5.4 & APC 3.1.11):0.106 s

注意:即使沒有顯示在上面的腳本中,我實際上使用了文件的完整路徑,而不依賴於include_path。

結果我得到的Linux是一樣的apc.enabled01,所以它看起來像指令緩存只是不工作。

然而,apc.php說:

apc.php

套餐(從remi repository,CentOS的6.3):

php-5.4.5-1.el6.remi.x86_64 
php-pecl-apc-3.1.11-1.el6.remi.1.x86_64 

APC配置:

apc.enabled=1 
apc.shm_segments=1 
apc.shm_size=64M 
apc.num_files_hint=1024 
apc.user_entries_hint=4096 
apc.ttl=7200 
apc.use_request_time=1 
apc.user_ttl=7200 
apc.gc_ttl=3600 
apc.cache_by_default=1 
apc.file_update_protection=2 
apc.enable_cli=1 
apc.max_file_size=1M 
apc.stat=1 
apc.stat_ctime=0 
apc.canonicalize=0 
apc.write_lock=1 

最後一件事,,PHP做報告APC爲啓用:

var_dump(extension_loaded('apc')); // (bool) true 
+0

我有同樣的麻煩!如果有人能幫忙,我很樂意。 – 2012-08-07 07:07:35

+2

堆棧溢出一個很好的PHP問題?所有的UPVOTES! – cmbuckley 2013-05-11 12:17:15

回答

3

我忘了提問題的一個重要組成部分:Web服務器在Windows 7下的Linux虛擬機上運行,​​並且正在讀從共享文件夾中的文件在主機上。

我注意到什麼減慢APC,必須stat該共享文件夾上的文件。

將文件複製到虛擬機可以解決問題。

但是,我很驚訝,apc.stat=0不能單獨解決問題,我本來會期望它到stat這些文件只有一次,然後無條件地從內存中的高速緩存讀取所有內容。

+1

這可能解釋了apc.stat = 0行爲(http://www.php.net/manual/en/apc.configuration.php#ini.apc.stat):對於包含的/必需的文件,此選項也適用,但是請注意,對於相對路徑包括(任何不以Unix上的/開頭的路徑),APC必須檢查以唯一標識文件。如果使用絕對路徑,則包含APC可以跳過統計信息,並使用該絕對路徑作爲文件的唯一標識符。 – 2013-05-17 05:48:25

+0

事實上,儘管我確信我現在的道路是絕對的,但我不能確定他們一直都是過去的......這個問題已經有點老了,我需要做一些新鮮事測試! – Benjamin 2013-05-17 16:23:26