- encoding (utf8)
- eof_ending (saut le ligne en fin de fichier)
- elseif (pas else if)
- function_call_space (espaces sur fonctions)
- function_declaration (pareil)
- function_typehint_space (pareil)
Je profite de cette écriture massive pour normaliser quelque chose de trompeur lorsqu'on compare deux versions, savoir l'usage de " ou ' dans le premier argument de define et defined. Comme les chaînes entre apostrophes sont plus rapidement analysées que celles entre guillemets, je choisis l'apostrophe.
Dépot obtenu avec le script Shell:
{{{
a=$(find . -name "*.php" |grep -v extensions/ | grep -v /config/ | grep -v index.php | grep -v public.php | grep -v prive.php )
echo -n "Fichiers: "
echo $a|wc -w
for i in $a
do
sed -f ~/Sites/spip/spip.sed $i > /tmp/f.php
if diff -q $i /tmp/f.php
then
:
else
diff $i /tmp/f.php
# echo $i; php /tmp/f.php
# mv /tmp/f.php $i
fi
done
}}}
et le script Sed:
{{{
s/Copyright (c) 2001-20../Copyright (c) 2001-2011/
s,\(if [(]!*\)*\(defined* *[(]\)"\([^"]*\)"\(.*\);[[:space:]]*[#/]*.*$,\1\2'\3'\4;,
}}}
normalise_inc ()
{
for i in $(grep -l 'pclzip.lib' inc*php*);
do
sed 's/pclzip.lib/inc_pclzip/' $i >x;
mv x $i;
done;
$MVCOMMAND pclzip.lib.php inc_pclzip.php;
for i in $(grep -l 'lab_' inc*php*);
do
sed 's/lab_/inc_/' $i >x;
mv x $i;
done;
$MVCOMMAND lab_diff.php inc_diff.php;
$MVCOMMAND lab_ortho.php inc_ortho.php;
$MVCOMMAND lab_revisions.php inc_revisions.php
}
- en confinant la gestion de la globale $delai dans le fichier inc-cache surchargeable
- en ne chargeant ce fichier que dans inc-public-global
- en mettant dans inc_invalideur les fonctions non necessaires a la determination des caches
- on n'a désormais plus qu'une table spip_caches, sous la forme :
+-----------------------------------------------+-----------------+-------+
| hache | id | suppr |
+-----------------------------------------------+-----------------+-------+
| CACHE/c/86400/cle%3Fid_article%3D884.9595d74a | id_article/884 | NULL |
| CACHE/c/86400/cle%3Fid_article%3D884.9595d74a | id_article/907 | NULL |
... / ...
| CACHE/2/86400/le%3Fid_article%3D2505.5d9390a2 | id_forum/a2505 | NULL |
| CACHE/2/86400/le%3Fid_article%3D2505.5d9390a2 | id_article/2505 | NULL |
| CACHE/2/86400/le%3Fid_article%3D2505.5d9390a2 | id_article/2442 | NULL |
... / ...
ici hache est le nom du fichier cache ; id l'identifiant (composite) de l'invalideur, et suppr est mis à 'x' quand on demande de supprimer. Un message est alors posé dans lire_meta() pour dire à inc-public.php3 de faire le ménage avant d'aller chercher un fichier cache.
Dans ecrire/articles.php3 il y a à deux endroits l'appel à l'invalidation
avec cette version je peux de nouveau faire tourner mes sites sous SPIP-cvs
(sauf bug flagrant).
Par rapport à la version précédente, il y a des dizaines de modifs :
- retour au schéma de cache précédent (noms de fichiers avec un peu plus de md5() au cas où
- retour des inc-urls personnalisés
- meilleure intégration, je pense, de l'invalideur de forums
- API invalideur déplacée dans l'espace privé pour pouvoir être appelée depuis ecrire/ (attention, il faudra que ça soit en option seulement !)
Par contre j'ai dû faire sauter, au moins provisoirement :
- les fichiers cache '_NEW' : d'une part on doit pouvoir les régler avec l'invalideur, d'autre part ça introduisait plein de biscorneries que j'ai préféré eviter
- l'inclusion en mode "html" et la gestion de la $fraicheur dans ce cas (mais les données du compilo concernant le mode "html" ou "php" sont préservées dans les meta-données du fichier cache
- le mécanisme de lock sur le calcul du squelette compilé
- le flock() sur calcul des caches de page (remplacé par spip_get_lock()
Je crois que c'est tout, mais j'en oublie forcément
A plus