2009-09-30 12 views
13

J'ai lu sur APC qu'il accélère plusieurs sites de fichiers php. J'ai donc ce projet particulier en PHP avec de nombreux fichiers et je découvre que require_once et l'analyse des définitions de classe uniquement (sans les exécuter) prend le plus de temps. J'ai donc installé APC sur mon serveur CentOS 5. Je me suis déplacé apc.php à mon serveur web et afficheComment faire fonctionner APC (PHP Cache)?

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

Cached Files 1 (281.1 KBytes) 

Et je peux aller sur le site et changer les sous-pages et ainsi de suite, et apc.php montre toujours qu'un seul fichier mis en cache ??

Et dans phpinfo(), il montre que:

APC soutien a permis

Je ne sais pas quoi faire. APC fonctionne-t-il (comme phpinfo() sais) ou n'est-ce pas? Un seul fichier mis en cache n'est pas beaucoup après avoir parcouru certaines pages sur mon site.

Et plus encore comment diagnostiquer les erreurs et s'assurer que APC fonctionne? J'ai naviguerez

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

Répertoire/tmp mais je n'ai pas de fichiers de apc là comme il est indiqué dans phpinfo devrait se produire.

S'il vous plaît aidez-moi à vérifier si APC fonctionne et si non, ce qui peut être un problème.

+0

Quelle est votre config APC? Spécifiquement vérifier pour: apc.include_once_override = 1 Qui résout un problème avec APC et le code standard include/reuire dans php – Neel

+0

Quel type de PHP-SAPI et Server utilisez-vous? Apache + mod_php, Apache + mod_fcgi/mod_fastcgi ou quelques Lighttpd + fastcgi? –

+0

J'ai le même problème. Apache + mod_php, et apc.php rapporte seulement 1 fichier mis en cache (que je suspecte être le fichier apc.php lui-même). Y a-t-il eu une révélation à cela? –

Répondre

8

APC peut être utilisé de deux façons:

  1. En tant que cache opcode. Vous avez activé le support pour que cela fonctionne; et
  2. En tant que cache général. Vous devez utiliser explicitement le API pour cela.

(1) est le principal avantage. Cela réduit le temps d'exécution du script en stockant les résultats de l'opcode de "compilation" des scripts.

Quant à fonctionner, du installation instructions:

Note: Sous Windows, APC a besoin d'un chemin temporaire pour exister et être accessible en écriture par le serveur web . Il vérifie les variables d'environnement USERPROFILE TMP, TEMP, dans cet ordre et essaye finalement le répertoire WINDOWS si aucun de ceux-ci ne sont .

Vous ne devriez pas en avoir besoin (ou voir aucune activité) sur CentOS. Cela étant dit, require/include est mieux que require_once/include_once/autoload mais cela ne devrait avoir d'importance que si vous le faites avec des centaines de fichiers.

+5

Ok, je comprends. Mais est-il possible de tester si cela fonctionne vraiment? Comme je l'ai montré, APC.php montre seulement un succès et ça a l'air de ne pas fonctionner. –

+2

Je seconde ceci. Existe-t-il des preuves (en dehors de l'augmentation de la vitesse) qui peuvent vous indiquer que cela fonctionne réellement? –

+2

Je suis dans le même dilemme, apc.php montre un seul fichier dans le cache qui est apc.php. Je suis confus :( – Kumar

2

Votre site est-il essentiellement un fichier PHP qui inclut ou nécessite d'autres fichiers? Cela peut enregistrer comme un seul fichier.Aussi, pour autant que je sache, la logique conditionnelle include/require peut ne pas mettre en cache comme prévu, bien que cela puisse être du ouï-dire!

+0

Je n'ai pas de conditions, j'ai 4 fichiers qui incluent 3 fichiers de bibliothèque.J'aimerais m'assurer qu'APC fonctionne, car APC.PHP ne l'identifie pas. –

1

Avez-vous vérifié les fichiers journaux thr? jetez un oeil à /var/log/apache2/error.log ou à son nom sous votre distribution.

Aussi, essayez de faire 2-3 fichiers php, point de theBrowser à eux, et vérifiez combien de fichiers php sont mises en cache par le cache APC ..

ne suis pas sûr APC, mais je vous recommande eaccelerator (http://eaccelerator.net/). Je l'ai testé il y a quelque temps et j'ai vraiment fait la différence. En réalité, APC ne partage pas le cache entre les processus.

0

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

« APC ne fonctionne pas bien avec PHP suEXEC que chaque processus PHP utilisera sa propre mémoire cache, et non partagée

Vous devriez essayer eAccelerator +/dev/shm si vous avez besoin d'utiliser PHP suEXEC. "

bien eu même problème, il semble PHP suEXEC + APC est le problème

1

Dans la branche 3.1.5dev APC, a new option was introduced vous permettant de désactiver le cache d'opcode. Il semble être désactivé par défaut.

Essayez d'ajouter ceci à votre fichier de configuration APC:

apc.enable_opcode_cache=1 
Questions connexes