L'utilisation d'un TTL de 0 signifie qu'APC videra tout le cache lorsqu'il sera à court de mémoire. L'erreur n'apparaît plus, mais cela rend APC beaucoup moins efficace. C'est une décision sans risque, sans problème, "je ne veux pas faire mon travail". APC n'est pas destiné à être utilisé de cette façon. Vous devez choisir un TTL suffisamment élevé pour que les pages les plus consultées n'expirent pas. Le mieux est de donner suffisamment de mémoire pour qu'APC n'ait pas besoin de vider le cache.
Lisez simplement le manuel pour comprendre comment ttl est utilisé: http://www.php.net/manual/en/apc.configuration.php#ini.apc.ttl
La solution consiste à augmenter la mémoire allouée à APC. Pour ce faire, augmentez apc.shm_size.
Si APC est compilé pour utiliser la mémoire de segment partagée, vous serez limité par votre système d'exploitation. Tapez cette commande pour voir la limite de votre système pour chaque segment:
sysctl -a | grep -E "shmall|shmmax"
Pour allouer plus de mémoire, vous devrez augmenter le nombre de segments avec le paramètre apc.shm_segments.
Si APC utilise la mémoire mmap, vous n'avez aucune limite. La quantité de mémoire est toujours définie par la même option apc.shm_size.
S'il n'y a pas assez de mémoire sur le serveur, utilisez l'option filters pour empêcher la mise en cache des fichiers php moins fréquemment utilisés.
Mais n'utilisez jamais un TTL de 0.
Comme c33s l'a dit, utilisez apc.php pour vérifier votre configuration. Copiez le fichier du package apc dans un dossier Web et pointez le navigateur vers celui-ci. Vous verrez ce qui est réellement alloué et comment il est utilisé. Les graphiques doivent rester stables après des heures, s'ils changent complètement à chaque actualisation, cela signifie que votre configuration est erronée (APC vide tout). Allouez 20% de RAM en plus que ce qu'APC utilise réellement comme marge de sécurité et vérifiez-la régulièrement.
La valeur par défaut de n'autoriser que 32 Mo est ridiculement basse. PHP a été conçu lorsque les serveurs faisaient 64 Mo et que la plupart des scripts utilisaient un fichier php par page. De nos jours, des solutions comme Magento nécessitent plus de 10k fichiers (~ 60 Mo en APC). Vous devez prévoir suffisamment de mémoire pour que la plupart des fichiers php soient toujours mis en cache. Ce n'est pas un gaspillage, il est plus efficace de conserver l'opcode en RAM plutôt que d'avoir le php brut correspondant dans le cache de fichiers. De nos jours, nous pouvons trouver des serveurs dédiés avec 24 Go de mémoire pour aussi peu que 80 $ / mois, alors n'hésitez pas à autoriser plusieurs Go à APC. J'ai mis 2 Go sur 24 Go sur un serveur hébergeant des magasins 5Magento et ~ 40 site Web wordpress, APC utilise 1,2 Go. Comptez 64 Mo pour l'installation de Magento, 40 Mo pour un Wordpress avec quelques plugins.
Aussi, si vous avez des sites de développement sur le même serveur. Excluez-les du cache.