Page 1 sur 1

Réécriture d'URL : Apache vs PHP.

Posté : 18 mars 2008, 12:56
par Hywan
Bonjour :).

Je me pose une question fondamentale. En effet, ça fait déjà plusieurs jours que je me pète la tronche sur une réécriture d'URL (Sékil en sait quelque chose), et je me pose alors une drôle de question : est-il plus rapide d'utiliser le mode de réécriture d'Apache (mod_rewrite et .htaccess par exemple), ou tout balancer derrière index.php et réécrire avec PHP ?

J'entends par « balancer derrière index.php » faire ceci :

Code : Tout sélectionner

RewriteEngine on RewriteCond %{SCRIPT-FILENAME} !-f RewriteCond %{SCRIPT-FILENAME} !-d RewriteRule ^(.*)$ index.php/$1
ou un truc du genre, semblable.

Je me pose des questions de performances car l'énergie déployée pour écrire une règle ... polymorphe (le terme n'est pas bon) est considérable. Alors que si on utilisait PHP avec un bon routeur (que je m'empresserais de programmer) on pourrait arriver à une utilisation plus simple. Mais comme le mod_rewrite est écrit en C, et que le routeur perso serait en PHP (sûrement avec expressions régulières, donc Perl etc.), quel serait le plus rapide ? Le moins lourd (en mémoire ) ? Etc. ?

Posté : 18 mars 2008, 14:05
par Sékiltoyai
J'aurais tendance à dire presque instantannément que apache serait un peu plus performant, j'ai tendance à pensé que le mod_rewrite est pas mal optimisé.
Après, ce qui est certain, c'est que les ressources nécessaires seront dans tous les cas ridicules…

Posté : 18 mars 2008, 15:05
par zeus
Même avis que Sekiltoyai.

Je pense qu'un module développé en C, pour cette tache précise sera plus performant qu'un code PHP partant de 0.

Posté : 18 mars 2008, 15:42
par Nagol
même avis, avec quand même une préférence pour la méthodologie on renvoit tout sur un index.php (front controller powa?) :)

Posté : 18 mars 2008, 17:06
par Hubert Roksor
La seule façon de répondre serait de faire un benchmark, en plus ça tombe bien on peut faire un benchmark synthétique pour ce genre de questions (pas la peine de simuler un truc réaliste).

Deux aspects qui n'ont pas été évoqués :
  • si une règle unique permet de se passer de .htaccess et mettre AllowOverride sur None, le gain de performance peut être important
  • si les règles de mod_rewrite permettent d'utiliser des fichiers statiques plutôt qu'un script, là encore les performances peuvent être meilleures
Fais un bench, et en cas d'égalité utilise le plus pratique ! (un indice : c'est celui qui ne fait pas planter toutes tes pages avec une erreur 500 quand tu te gourres :lol:)

Posté : 18 mars 2008, 18:35
par Hywan
Bien ça me conforte dans mes positions tout ça.

@Sékil : même avis que toi.

@*zeus : &Sékil (oui, je sors de cours d'Algo).

@Nagol : oui Hoa_Controller_Front powa ;-). En fait, mon routeur n'est pas ultra développé par rapport à celui de ZF par exemple. Je travaille sur une réécriture qui pourrait résoudre beaucoup de problèmes et je la proposerais en alternative. Je préfère proposer des réécritures plutôt que de forcer les utilisateurs à utiliser un routeur PHP. Donc pour me conforter dans cette idée, je peux faire jouer la carte de la ressource ;-).
Je ne dis pas que le routeur de Hoa est pauvre. Il est largement suffisant, mais si y a des mecs tordus, il faut pouvoir parer à toutes éventualités :).

@Hubert Roksor : Tes remarques sont très justes, et je n'y avais pas penser. Pour le Bench, ça attendra, j'ai vraiment pas le temps :roll:.

Posté : 18 mars 2008, 23:17
par naholyr
C'est trivial que mod_rewrite sera plus performant que de tout gérer avec un front controller.
Pour le routeur, regarde du côté de symfony, le système de routage est une merveille.