Anomalie #5934
Mis à jour par Éric Brison il y a plus de 10 ans
2 problèmes distincts sont présentés dans la demande.
1°) Mise en cache & postCreated
Effectivement la mise en cache d'un nouveau document et fait après l'appel de postCreated.
Il faut que cette mise en cache soit faite avant cet appel et après le "add" (enregistrement en BD et obtention de l'id).
2°) Taille du cache
Le cache est limité à 20. Les 20 premiers appels à new_doc ou à doc::store (dans le cas de la création).
L'appel à Doc::store() ne met pas l'objet en cache s'il s'agit d'une mise à jour.
La solution consiste à rendre paramétrable cette limite par un paramètre applicatif et par programmation.
Il pourra être possible d'indiquer "sans limite" en indiquant -1. (0 indiquant aucun cache).
Il est cependant à noter que certaine action de core ou autre module Dynacase utilise ce cache. Donc je propose
que la limite historique à 20 ne puisse par être diminuée mais juste augmentée.
En attendant, la mise en place du documentManager qui gère le cache de façon explicite,
il est envisagé de documenter le fonctionnement de ce cache afin de pouvoir :
* Changer la limite
* Ajouter un élément dans le cache
* Vider le cache (globalement ou par document)
L'alternative à cette documentation de fonction "interne" à core et de mettre à disposition
le documentManager qui réalise les mêmes fonctions que la fonction "new_doc" mais qui a l'avantage de
regrouper les fonctions d'accès et d'offrir des méthodes homogène d'accès aux documents unitaires et à la
gestion de ce cache - qui n'est pas un cache avec la BD mais une zone de partage d'objet documentaire.
En fichier joint, j'ai juste fait une stat sur la mémoire consommée par un "new_doc" basique.
Ici (en PHP5.6) on atteint 6Mo pour 100 documents "simple" et 60Mo sur php5.4 avec document complexe)