J'essaie d'utiliser APC ou XCache comme opcode pour mettre en cache mes pages PHP. Je l'utilise avec Zend and Doctrine et il y a un problème avec l'autochargeur.
Si j'essaie avec APC, je reçois ce qui suit: p> si j'essaie avec Xcache I Obtenir ce qui suit: p> set_include_path(dirname(__FILE__).'/../library/zendframework'
. PATH_SEPARATOR . dirname(__FILE__).'/../library/doctrine'.....
require 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->suppressNotFoundWarnings(false);
$loader->setFallbackAutoloader(true);
4 Réponses :
Y a-t-il quelque chose d'autre qui mucking le chemin inclus? Peut-être essayez peut-être de vous déconnecter le chemin Inclure juste avant cette ligne dans votre premier exemple d'APC. P>
Le xcache one est vraiment bizarre. Ce projet est assez mort, et je ne l'aurais pas confiance sur PHP 5.2+. Essayez EraceCelerator à la place? Nous avons eu la meilleure chance avec ça. P>
Il existe d'autres choses spécifiques à la doctrine dans le chemin Inclure (modèles, etc.). Nous recherchons un backend Zendcache ( Framefend.zend.com/manual /en/zend.cache.backends.html ) afin que EaceCelerator ne fonctionne pas.
Theres une proposition pour un backend EaceCelerator Framefend.zend.com/wiki/ Affichage / ZFProp / ... - devrait être assez facile à mettre en œuvre. Quoi qu'il en soit, ce que je me demandais est si quelque chose enlève votre destinataire inclut les chemins d'autant du total avant que cette erreur soit lancée.
Vous pouvez mettre un " meilleur fort>: enregistrez-le comme zend_session :: writeclose (vrai); code>" à la fin de votre index.php.
Cela écrira la session dans un état persistant avant que les objets nécessaires (Zend_Loader, etc.) se détruit.
Donc, il sera exécuté même si vous utilisez quitte () code>,
matrice () code> ou un
erreur fatale code> se produit: p>
register_shutdown_function(array('Zend_Session', 'writeClose'), true);
Crédit pour register_shutdown_function va à Hogberg et à Battal.
Il est probablement similaire au problème de la manipulation de session personnalisée et du cache APC-Cache. Si vous avez attribué un gestionnaire de session personnalisé, il est enregistré avec Rshutdown en PHP. Il s'agit de la même routine que APC utilise et de créer un conflit interne dans PHP et votre gestionnaire de session personnalisé ne fermera pas dans toutes les situations.
Vous devrez donc vous assurer de fermer manuellement le gestionnaire de session personnalisé à l'arrêt p>
mettre un Il est préférable d'enregistrer un gestionnaire d'arrêt de cette manière: p> mettre en haut de votre fichier index.php Pour vous assurer que la procédure d'arrêt est enregistrée avant l'exécution d'autres scripts. p> p> "zend_session :: writeclose (true);" code> à la fin de votre index.php n'est pas le meilleur moyen de le faire au cas où vous auriez une sortie; Appels dans vos scripts n'importe où. P>
Benjamin Cremer, vous êtes un économiseur de vie. Bien que le problème ci-dessus (original) soit un cas particulier d'autoloading avec des sessions, la fermeture de la session semble être une solution générale pour de tels cas. Une note cependant: p>
placer ou, simplement p>
Si vous n'utilisez pas Zend pour des sessions. P> zend_session :: writeeclose (true); code> à la fin de vos scripts peut ne pas toujours le couper, car vous pouvez avoir
quitter; code> S,
Die (); code> 's, etc. dans votre code. Dans ce cas, vous pouvez utiliser p>
register_shutdown_function (tableau ('Zend_Session', 'WriteClose'), true); code> p>
register_shutdown_function ('session_write_close'); code> p>