J'ai pas mal d'expérience en PHP et je suis en train de concevoir une petite appli de gestion de serveurs de jeux.
Au lieu d'utiliser encore et toujours une BD mysql pour stocker mes données, j'ai voulu innover et gérer des sortes de fichiers de configuration tel que nouveau, enregistrer sous, ouvrir, etc.
Bref, j'ai besoin, tant que le fichier de configuration en cours n'est pas sauvegardé, de stocker des renseignements (des objets sérialisés pour être précis).
J'ai essayé par fichier, ça marche bien, mais ça devient plus délicat quand je souhaite modifier/supprimer une info en particulier, il me faut alors me ballader dans le fichier, changer ce que je veux, etc, c'est assez lourd et je trouvais ça pas terrible.
J'ai cherché un peu dans le manuel de PHP et je suis tombé sur des fonctions de mémoires partagées. En gros, ça permet d'allouer une zone de mémoire et d'y stocker un peu tout ce que l'on veut. Il suffit de rappeler cette zone mémoire à n'importe quel moment pour retrouver ses données.
Tout semblait être au poil donc, sauf que quand j'ai voulu libérer ma mémoire, il s'est avéré que ça ne libérait rien du tout... Même l'exemple fournit dans la doc PHP (page shmop.examples.html dans la doc nexen) semble ne pas marcher au niveau de la libération puisque une lecture après la libération m'affiche tjs le contenu...
Pour finir :
- Je voulais savoir si l'un d'entre vous connait des équivalents à malloc() en PHP
- Ou alors si quelqu'un sait pq la libération (fonction shmop_delete() )semble de pas marcher et aurait une astuce...
- Et je suis ouvert à toute autre proposition qui vous viendrait à l'esprit pour faire du stockage temporaire.
PS : Sous Windows 2K et sup, vous avez besoin de la librairie php_shmop.dll (à décommenter dans php.ini donc) pour utiliser les fonctions de mémoire partagée.
PS2 : Je ne souhaite pas utiliser les sessions qui pourraient très bien jouer ce rôle, je trouve pas ça terrible de stocker des milliers d'infos en session, sans compter leur expiration, etc.
PS3 : Je tourne sous Apache2/PHP5
Message édité par lalex le 12-09-2004 à 21:57:49