Masque de validation de champs de type texte
Dans la 0.9 j’ai rajouté la possibilité de filtrer le contenu des champs de type texte du ME avec l’utilisation de masque (et pseudo-masque) ou des expressions régulières.
Un masque est une chaine de caractère comprise entre deux caractères ‘%’ sans espaces (‘% blah%’ ou ‘%blah %’ ne fonctionnera pas, alors que %blah% oui)
Exemple avec un masque :
- “p. %1-2%” obligera l’utilisateur à entrer une valeur correspondante à ‘p. x-x’ avec ‘x’ étant un nombre allant de 0 à 9
Une autre possibilité est d’utiliser le mode ‘raisonnable’, qui va analyser la chaine de caractère passée dans le champ et générer une expression régulière qui sera l’équivalent de la chaine passée SANS limite dans le nombre de caractère, sans tenir compte ni de la casse ni de l’accentuation.
Exemple :
- ‘p. 1-2′ autorisera les valeurs ‘p. 12-1987′, ‘p. 0-1′, ‘p. 1-5488′, ‘apgha….. 45587-987145′ etc…
- ‘testé 10′ autorisera les valeurs ‘alkufhrekbghàéksbg 68744171544′, ‘qgéhgùà 1′, etc..
Pour finir les regexp, pour les utilisateurs avertis :
- ‘/p\.\s\d{1,3}\-\d{1,3}/’ autorisera les valeurs ‘p. 123-123′, ‘p. 1-2′ mais pas ‘p. -2′ ni ‘p. 1-’, etc..
Benchmark de Lodel 0.8.7.3 versus Lodel 0.9
La version 0.9 de Lodel va apporter, en plus de l’import XML du modèle éditorial, des améliorations significatives au niveau des performances.
Les principales modifications ont été effectuées sur les requêtes SQL des templates qui sont maintenant mises en cache (celà inclut les loop ainsi que les variables de traductions), une refonte de la vue et des améliorations au niveau du parser.
Le test a été fait en local sur un serveur dédié, en utilisant Siege (http://freshmeat.net/projects/siege/).
Configuration matériel du serveur :
* 4x Intel(R) Xeon(R) CPU X3363 @ 2.83GHz
* 8 GO RAM
* disques durs 15 000trs/min
* PHP 5.2.6, MySQLi 5.0.51a, installés en configuration de base (paquets Debian)
Configuration de Siege :
root:~# siege -C
CURRENT SIEGE CONFIGURATION
JoeDog/1.00 [en] (X11; I; Siege 2.66)
Edit the resource file to change the settings.
———————————————-
version: 2.66
verbose: false
debug: false
protocol: HTTP/1.1
connection: close
concurrent users: 25
time to run: 60 seconds
repetitions: n/a
socket timeout: 90
delay: 0 sec
internet simulation: true
benchmark mode: true
failures until abort: 1024
named URL: none
URLs file: /root/siege_urls.txt
logging: false
log file: /var/siege.log
resource file: /etc/siege/siegerc
allow redirects: true
allow zero byte data: true
allow chunked encoding: true
Résultats :
| Lodel 0.8.7.3 sans cache | Lodel 0.8.7.3 avec cache | Lodel 0.9 sans cache | Lodel 0.9 avec cache | |
| Transactions (hits) | 5289 | 5553 | 15875 | 17416 |
| Availability (%) | 100 | 100 | 100 | 100 |
| Data transfered (MB) | 73,26 | 76,91 | 226,05 | 245,86 |
| Response time (s) | 0,28 | 0,27 | 0,09 | 0,09 |
| Transaction rate (trans/sec) | 88,76 | 92,77 | 262,79 | 289,93 |
| Concurrency | 24,88 | 24,93 | 24,95 | 24,94 |
| Longest transaction (s) | 8,16 | 1,44 | 16,27 | 0,67 |
On peut voir que Lodel 0.9 peut maintenant servir plus de 3 fois plus de pages que sa version précédente, avec une moyenne de 0.09s de temps de calcul par page contre 0.28s auparavant.
Petit plus, Lodel 0.9 sera compatible avec le niveau d’erreur E_STRICT .. !