[spip-dev] Bug report: rapidité.

Bonjour à tous.

Je suis tombé sur un problème idiot: en tapant n'importe quoi dans le
corps de l'article, la fonction inc_texte::supprimer_tags() bloque. En
fait, c'est l'appel à ereg_replace qui bloque (temps de rendu > 8min!).
En remplacant par preg_replace, la page est générée correctement, temps
de rendu < 10s...

Il me semble que les ereg* soient buggées en PHP; les preg* sont
beaucoup plus rapides. Le problème a été aussi constaté avec daCode, en
particulier sur Linuxfr, il me semble être général.

Il y-a-t-il une raison quelconque de garder ces ereg*?

@ spipjbcombes@altern.org <spipjbcombes@altern.org> :

Il me semble que les ereg* soient buggées en PHP; les preg* sont
.../... Il y-a-t-il une raison quelconque de garder ces ereg*?

La compatibilité avec php3.

Cela dit, il doit être possible de vérifier dans inc_version si on dispose
de preg_replace et, le cas échéant, de l'utiliser à la place d'ereg_replace.
Mais il faudrait alors reprendre tout le code d'inc_texte, et pas juste
supprimer_tags()...

-- Fil

Hi Fil!

@ spipjbcombes@altern.org <spipjbcombes@altern.org> :
> Il me semble que les ereg* soient buggées en PHP; les preg* sont
> .../... Il y-a-t-il une raison quelconque de garder ces ereg*?

La compatibilité avec php3.

Le module est apparu d'apres le manuel, dans PHP 3.0.9. Free est en
3.0.12, c'est un des plus vieux PHP qui traine.
Je pense qu'il est possible de passer aux preg sans pbs de compat.

Cela dit, il doit être possible de vérifier dans inc_version si on dispose
de preg_replace et, le cas échéant, de l'utiliser à la place d'ereg_replace.
Mais il faudrait alors reprendre tout le code d'inc_texte, et pas juste
supprimer_tags()...

On peut reimplementer les preg* avec des ereg* le cas echéant...

spipjbcombes@altern.org wrote:

Le module est apparu d'apres le manuel, dans PHP 3.0.9. Free est en
3.0.12, c'est un des plus vieux PHP qui traine.
Je pense qu'il est possible de passer aux preg sans pbs de compat.

Non, c'est un module optionnel qui n'est pas partout (altern).

On peut reimplementer les preg* avec des ereg* le cas echéant...

Bordélique ;))

A part ça, on n'a jamais constaté de problème particulier concernant
les ereg. C'est peut-être spécifique à ta plateforme ...?

Hi Antoine!

>
> Le module est apparu d'apres le manuel, dans PHP 3.0.9. Free est en
> 3.0.12, c'est un des plus vieux PHP qui traine.
> Je pense qu'il est possible de passer aux preg sans pbs de compat.

Non, c'est un module optionnel qui n'est pas partout (altern).

Hmm, il me semble qu'il faut explicitement demander de ne pas inclure
les PRCE lors du configure...

> On peut reimplementer les preg* avec des ereg* le cas echéant...

Bordélique ;))

A part ça, on n'a jamais constaté de problème particulier concernant
les ereg. C'est peut-être spécifique à ta plateforme ...?

Non. Le problème apparaît avec PHP4 sûr, peut-être PHP3 aussi.
Le pb a aussi été constaté sur Linuxfr.org: l'usage intensif de regexp
dans le module de cache mettait le serveur à genoux. Ca va bcp mieux
depuis que daCode est passé aux preg*. D'apres la liste daCode-dev,
c'est un pb conu de PHP.

Dans mon cas, ereg_replace est partie dans une boucle infinie, à
priori...

spipjbcombes@altern.org wrote:

Non. Le problème apparaît avec PHP4 sûr, peut-être PHP3 aussi.
Le pb a aussi été constaté sur Linuxfr.org: l'usage intensif de regexp
dans le module de cache mettait le serveur à genoux. Ca va bcp mieux
depuis que daCode est passé aux preg*. D'apres la liste daCode-dev,
c'est un pb conu de PHP.

Peut-être, mais le module de cache étant critique, il est normal d'y
utiliser le minimum possible de fonctions lourdes. Quant aux opérations
textuelles du fichier inc_texte, elles sont effectuées hors cache, lors
des recalculs.