Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
J'ai dans mon application besoin assez souvent de comparé des listes ip fixe avec un réseau X.X.X.X/X
J'ai une fonction qui fait cela.
Mais, c'est assez gourmand en ressource, lorsque j'ai 4500 ip et que je dois déterminé si elle sont bien dans tel réseau, ca commence à faire lourd.
Je vais donc utilisé le cache
Lorsque j'ai besoin d'avoir ma liste d'ip depuis un réseau, si le cache n'a pas son entrée pour le réseau X, je la construits et l'enregistre.
Je pense utiliser Core+File.
J'aimerais aussi pouvoir faire l'effet inverse, c'est à dire, savoir dans quels réseaux est enregistré une adresse IP.
Pensez vous qu'utilisé les tags soit la solutions la plus simple ?
De plus, il serait pratique que lorsque je rajoute une adresse IP, que les caches réseau contenant cet IP soit détruis. La encore les tags me seront utile.
Résumé de mes questions
Pensez vous qu'avoir une centaines de tags par cache pose problème ?
Le fais d'utiliser le backend 'File' est-il une bonne solution ?
Merci pour vos suggestion
Hors ligne
Je pensais à un arbre par représentation intervallaire mais après relecture de ton post, je pense pas que cela pourrait t'aider...
Quoique...
Sisi, c'est ce qu'il te faut, un arbre par représentation intervallaire...
Non ?
Ubini a édité ce post 7651765 fois
Dernière modification par ubini (03-04-2010 00:22:53)
Hors ligne
Ton système ressemble à de la géolocalisation simple.
Personnellement, je convertis les adresses ip en entier.
Cela permet de faire des opérations de recherche très simple, le plus gros du traitement étant fait sur la conversion... (Mega petit...).
Exemple :
Tu sais que ton réseau A utilise l'ip de début 192.168.1.1 et 192.168.1.50 de fin. Tu convertis le début et la fin en entier que tu stock en BDD.
Cela évite de comparer des chaines de caractère.. Et permet d'utiliser un bon petit index.
Hors ligne
@ubini, je n'ai pas étudier cet algo, mais je pense deviner à quoi il ressemble. Mais permet-il que les intervalles se croisent ?
@armetiz: je m'en doutais d'avoir une telle réponse. Le problème, c'est que ca me fait rajouté pas mal de donnée dans ma base et me fait trop modifié de code. Ce dernier point n'étant pas envisageable immédiatement (mais peut être dans un futur)
Hors ligne
Moi perso, je ferais bcp plus le bourin : j'aurais mis directement les ip dans la base et j'aurais compté sur la base pour optimiser tout ça... Je pense (mais je rêve peut-être) qu'une base optimisera mieux que moi les perfs pour ce genre de traitement...
Eventuellement si tu ne veux pas solliciter ta "vraie base", tu peux peut-être essayer avec une base plus basique genre sqllite (mais je ne suis pas certain que ces bases fassent le même genre d'optimisation que les "vraies bases")
A+, Philippe
Hors ligne
ok, philippe, mais la liste d'adresse IP n'est obtenu quand lisant un répertoire. Je ne peux pas refléter ceci dans ma "vrai base" car les fichiers/répertoires peuvent être modifier sans touchées aux bases.
Mais ce que tu dis rejoins ma première idée si j'ai bien compris. Utilisé un cache sqlite..
Hors ligne