Comment partager cache APC entre plusieurs processus PHP lors de l'exécution sous FastCGI?
Je suis actuellement en cours d'exécution en plusieurs exemplaires PHP/FastCGI, avec APC activé (sous Apache+mod_fastcgi, si ce qui compte). Puis-je partager cache entre le processus? Comment puis-je vérifier si il est partagé déjà? (Je pense que la apc.mmap_file_mask
paramètre ini pourrait être impliqué, mais je ne sais pas comment l'utiliser).
(L'une des raisons pour lesquelles je pense que sa pas partagé pour le moment est que le apc.mmap_file_mask
, tel que rapporté par l'apc.php interface web bascule sur 3 valeurs différentes comme je l'ai recharger.)
Vous devez vous connecter pour publier un commentaire.
APC ne pas partager son cache entre plusieurs php-cgi travailleurs exécutant sous fastcgi ou fcgid. Voir cette demande de fonctionnalité pour plus de détails: "ce comportement est celui prévu à compter de maintenant".
Une solution de contournement est de permettre à PHP pour gérer ses propres travailleurs. Vous pouvez faire cela en utilisant la PHP_FCGI_CHILDREN variable d'environnement dans votre script (plein d'exemples sur le web pour que). Vous devez également arrêter de fastcgi/fcgid de frai plus d'un processus PHP si vous souhaitez utiliser cette méthode.
L'inconvénient avec PHP_FCGI_CHILDREN est que sa gestion des travailleurs n'est pas aussi bonne que fcgid/fastcgi.
Donc, nous y sommes. L'APC dans un fcgid/fastcgi environnement en donnant à chacun PHP travailleur leur propre cache, ou la désactivation de la fcgid/fastcgi du processus de la ponte en faveur de PHP de gestion intégrés. Espérons que cela change à l'avenir.
Alors qu'il n'est pas parfait, la méthode Domster suggéré est le meilleur. J'ai fait cela pendant un court laps de temps sur certains faible volume de sites sans erreurs. J'ai écrit une explication détaillée sur comment mettre en place mod_fastcgi, en partageant un cache d'opcode la nuit dernière.
J'ai trouvé qu'il est très important d'utiliser mod_fastcgi plutôt que les plus récents mod_fcgid parce que mod_fcgid seulement envoyer une requête à la fois pour le processus PHP indépendamment de la façon dont beaucoup d'enfants de PHP a engendré par PHP_FCGI_CHILDREN.
mod_fcgid
!Le cache doit être partagée entre plusieurs processus. Vous devriez voir la même valeur pour le fichier mmap entre la fonction phpinfo() et apc.php les invocations. Il fonctionne pour moi avec le défaut suggéré APC paramètres de configuration:
Vous pouvez poster vos paramètres. J'ai vu les avertissements que le mmap_file_mask doit être exactement l'une des valeurs qu'ils permettent. Donc si il vous manque un de ces Xs il est impossible de dire ce que vous obtiendrez.
Peut-être que cela implique votre fastcgi+de configuration d'apache.