2009-09-30 15 views
13

Ho letto su APC che accelera più siti di file php. Quindi ho questo particolare progetto in PHP con molti file e scopro che require_once e l'analisi solo delle definizioni di classe (senza eseguirli) richiedono più tempo.Come far funzionare APC (PHP Cache)?

Quindi ho installato APC sul mio server CentOS 5. Mi sono trasferito apc.php al mio webserver e visualizza

Hits: 1 (50.0%) 
Misses: 1 (50.0%) 

Cached Files 1 (281.1 KBytes) 

E posso andare al sito e cambiare sottopagine e così via, e apc.php mostra ancora un solo file memorizzato nella cache ??

E nel phpinfo() si dimostra che:

APC abilitato

Non so cosa fare. APC funziona (come phpinfo() sais) o no? Solo un file memorizzato nella cache non è molto dopo aver sfogliato alcune pagine sul mio sito web.

E altro ancora come diagnosticare gli errori e assicurarsi che l'APC funzioni? Ho sfogliato

apc.mmap_file_mask /tmp/apc.QnLqNf /tmp/apc.QnLqNf

directory/tmp, ma non ho alcun file di APC là, come è affermato nel phpinfo dovrebbe verificarsi.

Si prega di aiutarmi a controllare se APC sta funzionando e in caso contrario, ciò che può essere un problema.

+0

Qual è la tua configurazione di APC? In particolare, verificare: apc.include_once_override = 1 Che risolve un problema con APC e lo standard include/reuire il codice in php – Neel

+0

Che tipo di PHP-SAPI e server stai usando? Apache + mod_php, Apache + mod_fcgi/mod_fastcgi o alcuni Lighttpd + fastcgi? –

+0

Sto avendo lo stesso problema. Apache + mod_php, e apc.php sta segnalando solo 1 file in cache (che sospetto sia il file apc.php stesso). Ci sono già state rivelazioni su questo? –

risposta

8

APC può essere utilizzato in due modi:

  1. Come una cache codice operativo. Il supporto è abilitato in modo che funzioni; e
  2. Come cache generale. È necessario utilizzare esplicitamente il API per questo.

(1) è il vantaggio principale. Riduce i tempi di esecuzione dello script memorizzando i risultati opcode degli script di "compilazione".

Quanto a farlo funzionare, dal installation instructions:

Nota: Su Windows, APC ha bisogno di un percorso temporaneo per esistere ed essere scrivibile dal server web . Controlla le variabili di ambiente TMP, TEMP, USERPROFILE in e ordina la directory WINDOWS se nessuna di queste è impostata su .

Quindi non dovresti averne bisogno (o vedere alcuna attività) su CentOS.

Detto questo, require/include è meglio di require_once/include_once/autoload ma dovrebbe essere importante se lo si fa con centinaia di file.

+5

Ok, capisco. Ma c'è un modo per testare se funziona davvero? Come ho notato APC.php mostra solo una hit e miss e sembra che non funzioni. –

+2

Secondo questo. C'è qualche prova (a parte l'aumento di velocità) che può dirti che sta effettivamente funzionando? –

+2

Sono nello stesso dilemma, apc.php mostra solo un file nella cache che è apc.php. Sono confuso :( – Kumar

2

Il sito è fondamentalmente un file PHP che include o richiede altri file? Questo può essere registrato come un singolo file.Inoltre, per quanto ne so, la logica condizionale include/require potrebbe non memorizzare nella cache come previsto, anche se potrebbe essere solo una dicitura!

+0

Non ho condizionali.Ho 4 file che includono 3 file di libreria. Mi piacerebbe assicurarmi che APC funzioni, perché APC.PHP non lo identifica. –

1

Hai controllato i file di registro? dare un'occhiata a /var/log/apache2/error.log o comunque il suo nome sotto la tua distribuzione.

Inoltre, cerco di fare 2-3 file php, punto thebrowser contro di loro, e quindi controllare il numero di file php vengono memorizzati nella cache dalla cache APC ..

Non sei sicuro di APC, ma vi consiglio eAccelerator (http://eaccelerator.net/). L'ho provato qualche tempo fa e ho davvero fatto la differenza.

0

http://www.litespeedtech.com/support/forum/showthread.php?t=3761

"APC non funziona bene con PHP suEXEC come ogni processo PHP userà la propria memoria cache, non condiviso

Si dovrebbe cercare eAccelerator +/dev/shm se hai bisogno di usare PHP suEXEC. "

ben avuto lo stesso problema, sembra PHP suEXEC + APC è problema

1

Nel ramo 3.1.5dev APC, a new option was introduced che consente di disabilitare la cache codice operativo. Sembra essere disattivato per impostazione predefinita.

Prova ad aggiungere questo al vostro file di configurazione di APC:

apc.enable_opcode_cache=1