2015-03-21 17 views
26

Sono in esecuzione un server Web con i seguenti pacchetti; php-apc 3.1.7-1 php5-FPM 5.3.10-1ubuntu3.10Differenza tra APC, APCu e Opcache?

Tuttavia, ho costruito un nuovo server su Ubuntu 14.04 e sembra come php-APC non è più disponibile.

Pertanto, APC è stata la lifeserver per il mio traffico enorme (100 k/visite giornaliere uniche)

Sono po 'confuso su meccanismi di caching su PHP. Il nuovo server include i seguenti pacchetti: php-apc 4.0.2-2build1 php5-apcu 4.0.2-2build1 php5-fpm 5.5.9 + dfsg-1ubuntu4.7

phpinfo() mi dà "apc "come emulato. Per quanto ho capito, APC è stato sostituito con APCu.

https://github.com/cepa/kickasscache Sto eseguendo questa classe gratuita per il mio caching, salva davvero un sacco di cpu/mem nel mio caso. Ma non riesco a capire se questo accada con APCu?

Se non lo è, come posso impostare una cache corretta? Perché il mio nuovo server ha risorse limitate e ho bisogno di una soluzione.

php -v torna

PHP 5.5.9-1ubuntu4.7 (cli) (built: Mar 16 2015 20:47:39) 
Copyright (c) 1997-2014 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies 
    with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies 

Ha significa OPcache abilitato di default?

+1

APCu è il componente userdata del vecchio APC, senza la memorizzazione nella cache bytecode, poiché OpCache è ora la cache di bytecode standard per PHP, ma non fornisce la cache userdata –

+0

@MarkBaker Grazie per le informazioni. C'è un modo per tornare alle vecchie funzionalità di APC? Sto pensando di downgrade sia il mio sistema operativo, php e altri pacchetti. – martyr

+0

Se esegui il downgrade di PHP al di sotto del 5.5, perderai OpCache e sarai in grado di utilizzare nuovamente APC come cache di bytecode –

risposta

9

Non è necessario APC (o alcun tipo simile di estensioni di memorizzazione nella cache bytecode come XCache) a partire da PHP 5.5 e versioni successive. Gli sviluppatori PHP hanno integrato direttamente ciò che chiamano OPCache nel nucleo del prodotto. Ciò non solo fornisce una maggiore stabilità complessiva del prodotto, ma è ufficialmente supportato dagli sviluppatori PHP.

Se è necessaria una funzione specifica da APC che non è in OPCache (ad esempio, funzionalità APCu), è necessario avviare una discussione sulla mailing list di php-dev.

Infine, una buona regola empirica è di eseguire solo versioni di PHP elencate nella homepage di php.net. Mentre le distro generalmente eseguiranno il backport delle correzioni di sicurezza, le versioni più recenti di PHP hanno caratteristiche più utili. Le versioni più recenti di PHP hanno in genere anche notevoli vantaggi in termini di prestazioni che potrebbero consentire di bypassare la necessità di estensioni PECL aggiuntive come APCu.

+0

Posso chiedere una fonte per favore? http://php.net/manual/en/book.opcache.php dice che è in bundle con PHP 5.5+ ma il contenuto di '/ etc/php5/cli/php.ini' e'/etc/php5/apache2/php.ini', nella mia nuova installazione di PHP 5.6+ dice che è disabilitato da default ('; opcache.enable = 0'). –

+0

che il punto e virgola all'inizio di quella voce indica che la linea in questione è commentata, quindi IMHO, opcache * è * abilitato nell'installazione di PHP. Se il punto e virgola non fosse lì, allora sarebbe davvero disabilitato, quindi sei bravo. –

+0

È possibile installare 'php-apcu-bc' se si utilizzano le capacità di archiviazione dei dati di APC, installa le funzioni di compatibilità utilizzando APCu. – Ariel